3

私の場合は、Select2 ウィジェットの createSearchChoice 機能を使用したいと考えています。そのため、select 要素の代わりに html input 要素を使用する必要があることがわかったので、ng-repeat を使用して select2 ウィジェットを設定することはできません。「データ」オプションがあり、select2ウィジェットに静的データを入力できましたが、動的に入力しようとしたときではありませんでした。

機能するもの:

html: <input class='select2' ui-select2='sel2props' type='hidden'>

コントローラーで:

$scope.sel2props = {
    createSearchChoice: ...

  data: [ 
    { id: 0, text: 'yabba' }
    etc
  ]
};

しかし、データを変数に設定しようとすると、データベースが提供するものに設定できる変数にウィジェットが入力されません。

data: $scope.data;

function to retrieve data {
    $scope.data = retrieved data;
}

取り出されたデータは指定されたとおりです。

データキーを追加するボタンを設定すると、機能します:

$scope.appenddata = function () {
  $scope.data.push({id:1, text: 'anot'});
};

だから私はそれがタイミングの問題だと思っていて、 $digest と $apply を試してみましたが、コントローラーでは機能しません。私はディレクティブを設定しようとしましたが、実際には単純なウィジェットを実行できますが、select2 は実行できません。誰かがそれを助けることができれば、それは素晴らしいことです.

4

3 に答える 3

5

解決策は簡単です。別の配列を参照するのではなく、要素をselect2データ配列にプッシュするだけです。

于 2013-02-08T00:35:49.117 に答える
1
function (result) {
  $scope.lookupOptions.data.length = 0; // remove old items
  angular.extend($scope.lookupOptions.data, result.data); // add new items                  
}
于 2013-11-20T18:36:20.907 に答える
-2

私が最近利用したトリックは、Select2 のqueryオプションを使用して最新のデータをオンデマンドで渡すことです。

カスタム ディレクティブにラップされた例をまとめました。このプランクを参照してください。

于 2013-02-05T22:45:03.023 に答える