我在http://plnkr.co/edit/mTaRPoAsQQQ6OSEQLS3a?p=preview
为此问题创建了一个plunker代码这是列表的HTML代码
<select ng-model="modSelectedState" id="inputLocation-" name="filter_location"
class="location" ng-options="state as state.full_name for state in states"
chosen="states">
<option value="">State</option>
正如你所看到的,我创建了一个指令并将其命名为#34;选择&#34;,这里是代码:
app.directive('chosen', function ($http) {
var linker = function (scope, element, attr) {
scope.$watch(scope.states, function (oldVal, newVal) {
element.trigger('liszt:updated');
});
scope.$watch(attr.ngModel, function () {
element.trigger('liszt:updated');
});
element.chosen({disable_search_threshold: 20});
};
return {
restrict: 'A',
link: linker
}
});
请注意,我使用的是旧版本的选择&#34;这需要&#39; liszt:更新&#39;而不是选择:更新&#39;
我知道状态正在填充,因为当我检查代码时,我可以在原始SELECT中看到它们。有什么想法吗?
答案 0 :(得分:1)
您必须将指令上的$ watch设置为您需要监视的作用域上的变量名称。发生的事情是手表正在运行触发器&#39;在列表之前有元素。
我放了一些$日志,所以你可以检查
http://plnkr.co/edit/mR8WhwvJiDZMG7Nlursg?p=preview
scope.$watch('states', function (newVal, oldVal) {
element.trigger('liszt:updated');
$log.info('trigger');
});