私は、アプリケーション内でディレクティブを使ってjQueryマルチセレクトプラグインを実装しようとしています。ここでは」select要素:ng-optionsがDOMの更新を完了した時期はどうすればわかりますか?
<select multiple
ng-model="data.partyIds"
ng-options="party.id as party.name for party in parties"
xs-multiselect="parties">
</select>
モデルparties
モデルが$ HTTP経由でロードされます。マルチセレクションプラグインは、select
内のoption
要素を解析し、素敵なマルチセレクトを生成します。
select
要素にオプションが設定されていることを検出する方法はありますか?そのため、マルチセレクションプラグインにデータを更新するよう指示できますか?ここで
は私のディレクティブです:
machineXs.directive("xsMultiselect", function() {
return {
restrict: "A",
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
element.multiselect().multiselectfilter();
scope.$watch(scope[attrs["xsMultiselect"]], function() {
// I tried watching but it doesn't help
element.multiselect('refresh');
element.multiselectfilter("updateCache");
});
}
}
});
をあなたの$時計内部では、$タイムアウトを呼び出してみてください - すなわち、タイムアウトコールバック関数内で複数選択のものを置きます。これにより、ng-optionsディレクティブが実行され、DOMにオプションを追加することができます。 –
これは機能しません。私は$ watchを正しく設定しましたか? – lucassp
それは私には大丈夫です。私の提案がうまくいくかどうかはわかりませんでした。 Angularは、レンダリングが完了したときに実際に信号を送る方法はありません。ときには$ timeoutが動作することもありますが、必ずしもそうではありません –