1

コントローラーからの先読み入力テキストボックスで一致結果を開くようにトリガーする方法はありますか?Open AngularUI Bootstrap Typeaheadがコントローラで結果に一致する

ユースケース:ページのhttps://example.com/search/searchText

  • コントローラはコントローラ
  • から先行入力結果を示す初期
  • トリガの入力テキストに「検索テキスト」(NG-モデル)を設定する

    • ユーザが進みます

    私は、入力テキストボックスに入力している間に、先読みの結果を得ることができます。

  • 答えて

    0

    私はいくつかの方法で動作するようになっていますが、どちらもui-bootstrapを変更する必要があります。私はプルリクエストを作成することができますが、私の特定のユースケースが共通のものかどうかはわかりません。

    1)入力要素のフォーカスに関するカスタム指示と呼び出しの方法UibTypeaheadController.scheduleSearchWithTimeout

    指令:UI-ブートストラップに

    .directive("showSearchResultsOnFocus", function($stateParams) { 
    return { 
        require: ['uibTypeahead', 'ngModel'], 
        link: function (scope, element, attr, ctrls) { 
         var typeaheadCtrl = ctrls[0]; 
         var modelCtrl = ctrls[1]; 
    
         element.bind('focus', function() { 
          if (!$stateParams.search || !modelCtrl.$viewValue) return; 
          typeaheadCtrl.exportScheduleSearchWithTimeout(modelCtrl.$viewValue); 
         }); 
        } 
    } 
    

    更新:

    this.exportScheduleSearchWithTimeout = function(inputValue) { 
        return scheduleSearchWithTimeout(inputValue); 
    }; 
    

    悪い:は、コントローラ上のメソッドを公開することが必要です。利用可能な方法はinitであり、スコープは分離されています。外部のコントローラから電話をかけることは意図していません。

    2)フォーカスのデフォルト値とショーの結果を設定できるように、新しい先行入力属性を追加します:UI-ブートストラップに

    更新:

    var isAllowedDefaultOnFocus = originalScope.$eval(attrs.typeaheadAllowDefaultOnFocus) !== false; 
    originalScope.$watch(attrs.typeaheadAllowedDefaultOnFocus, function (newVal) { 
        isAllowedDefaultOnFocus = newVal !== false; 
    }); 
    
    element.bind('focus', function (evt) { 
        hasFocus = true; 
        // this was line before: if (minLength === 0 && !modelCtrl.$viewValue) { 
        if ((minLength === 0 && !modelCtrl.$viewValue) || isAllowedDefaultOnFocus) { 
        $timeout(function() { 
         getMatchesAsync(modelCtrl.$viewValue, evt); 
        }, 0); 
        } 
    }); 
    

    悪い:UI-ブートストラップが、変化にプル要求をたぶん一般的な使用機能ではありません。ここに広報を提出:https://github.com/angular-ui/bootstrap/pull/6353合併するかどうかは分かりませんが、それまではフォークを使用しているかどうかは不明です。

    他の提案はありますか?

    バージョン 角度:1.5.8、UIBS:2.2.0、ブートストラップ:3.3.7

    関連する問題