0

ドロップダウン (選択) を外部 jquery プラグインにリンクするディレクティブを作成したいと考えています。

これは、ディレクティブの templateUrl ビューのコードです。

<select multiple="multiple">
  <option data-ng-repeat="(key,label in opts)"
     value="{{key}}">{{label}}</option>
</select>

これは私のディレクティブのリンク機能です:

link: function(scope, element, attrs)
   {
       console.log( scope.opts );
       console.log( $(element).html() );
       $(element).chosen(); //call external plugin
   }

ここでの問題は、何らかの理由で、link関数が呼び出されたときに、選択に ng-repeat を使用したオプションがまだ入力されていないことです。そのため、jquery プラグインを呼び出すと、後で選択にオプションが設定されていても、空のドロップダウンが表示されます。

の出力にconsole.log( scope.opts );は、オプション付きのオブジェクトが正しく表示されますが、console.log( $(element).html() );以下のみが表示されます。

<!-- ngRepeat: (key,label) in opts -->

ng-repeat が select に入力されたときに通知を受け取る方法はありますか? その場合にのみ外部プラグインを呼び出すことができますか?

4

1 に答える 1

0

この問題 (dom が angularJS によっていつ更新されたかがわからないという問題) の解決策は、$timeout. ただし、ドロップダウンでngOptionsは、外部プラグインとの統合が非常に困難です。したがって、選択したプラグインまたは他のプラグインをドロップダウンと統合したい他の人には、代わりに通常のプラグインngRepeatを使用することをお勧めしますngSelected<option>sngOptions

于 2013-08-26T20:38:52.883 に答える