を更新されません。私が選んと角のため、この偉大なチュートリアル(link)に続いてきました(コードは同じほとんどである)選ばれた角度ディレクティブは
ここでは私のディレクティブです:ここでは
app.angularModule.directive('chosen', function() {
var linker = function (scope, element, attrs) {
var list = attrs['chosen'];
scope.$watch(list, function() {
element.trigger('chosen:updated');
});
element.chosen({ width: '350px'});
};
return {
restrict: 'A',
link: linker
};
});
ですHTML:
<select data-placeholder="Choose a Category" multiple class="col-lg-8 chosen-select" chosen="items"
ng-options="item._backingStore.Name for item in items" ng-model="selectedCategories" >
</select>
私がしたいことは、ユーザが編集ボタンをクリックすると、モーダルウィンドウがポップアップし、で、編集ボタンをクリックする前に選択した場所をカテゴリは、モーダルウィンドウで選択されています。ここで
は、コントローラの部分である:
$scope.$watch(function() { return adminCrudService.getCategoriesForUpdate(); }, function() {
$scope.action = "edit";
$scope.categoriesForUpdate = adminCrudService.getCategoriesForUpdate();
if ($scope.categoriesForUpdate.length > null) {
$scope.selectedCategories = _.filter($scope.items, function (item) {
return _.contains($scope.categoriesForUpdate, item);
});
}
});
私は$ scope.selectedCategoriesを記録してきたし、すべてが彼らと罰金ですが、いくつかの理由で選ばれた中で何も選択されていません。
私は間違って何をしていますか?どのように修正できますか?
EDIT
私は$見る
$scope.selectedCategories = "";
内のこの行を入れても、私はいくつかの項目を選択すると、近くにモーダルは、再びそれを開く気づいた、選択された値が再び前夜ありますEDIT 2
私はこの問題をしばらく残しました。なぜなら、私はより重要なことに対処する必要があったからです。 私は選択せずに試しました。つまり、「通常の」選択とコードを使用しています。だから、確かに私の選ばれた指令は、それがうまくいくわけではありません。
これはまさに私が探していたものです。ありがとうございました! – abhishekgarg
これは本当に私の意見では、選択したディレクティブの一部になるはずです。 – Millenjo
実際には、コレクションには 'scope。$ watchCollection(list、func)'を使用し、 '$ watch *'はウォッチを止める関数を返します。これは '$ scope'が破壊するときに呼び出されるべきです:' scope。$ on ( '$ destroy'、function(){ ; unwatchModel(); ; unwatchSource(); }); ' – Hikiko