Javascript selected.js不';不能很好地使用角度指令

Javascript selected.js不';不能很好地使用角度指令,javascript,jquery,angularjs,jquery-chosen,Javascript,Jquery,Angularjs,Jquery Chosen,我在这里为这个问题创建了一个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="">

我在这里为这个问题创建了一个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>
请注意,我使用的是旧版本的“selected”,它需要“liszt:updated”而不是“selected:updated”


我知道正在填充状态,因为当我检查代码时,我可以在原始SELECT中看到它们。有什么想法吗?

您必须将指令上的$watch设置为需要监视的作用域上的变量名称。发生的情况是,在列表包含元素之前,手表正在运行“触发器”

我放了一些$log,你可以查一下


您注意到控制台上有一个错误吗?它说的是错误:[$compile:multidir]多个指令[ngModel,ngModel]在:@WebDever上请求“ngModel”控制器是的。它与第二个指令相关。我已将其删除以避免混淆。该指令仍然不起作用。顺便说一下,请注意,已经有一个选择的指令以angular编写。我知道该指令,但无法使用它。我使用的模板使用不同的CHOen版本。建议的版本不同,会导致丢失原始设计。谢谢,它现在像魔术一样工作。出于一般目的,我将“states”更改为“attr.selected”,并在HTML中添加了“selected=”states“。
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
}
});
scope.$watch('states', function (newVal, oldVal) {
    element.trigger('liszt:updated');
    $log.info('trigger');            
});