Javascript AngularJS:使用ng repeat与外部插件集成指令
我想构建一个将下拉选择链接到外部jquery插件的指令 这是指令的模板URL视图的代码:Javascript AngularJS:使用ng repeat与外部插件集成指令,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我想构建一个将下拉选择链接到外部jquery插件的指令 这是指令的模板URL视图的代码: <select multiple="multiple"> <option data-ng-repeat="(key,label in opts)" value="{{key}}">{{label}}</option> </select> link: function(scope, element, attrs) { cons
<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函数时,select还没有使用ng repeat填充选项。因此,当我调用jquery插件时,它会显示一个空的下拉列表,即使后面的select中填充了选项
console.log scope.opts的输出;正确显示带有选项的对象,而console.log$element.html;仅显示:
有没有一种方法可以在ng repeat填充select时得到通知,这样我才能调用外部插件?对于不知道angularJS何时更新dom的问题,解决方案是使用$timeout。然而,对于下拉菜单,ngOptions很难与外部插件集成。因此,我建议任何想将Selected或任何其他插件与下拉列表集成的人,只使用ngRepeat和ngSelected,使用normal s而不是ngOptionsAngular没有任何机制来可靠地检测DOM渲染的时间。您最好使用$timeout。“你为什么不看看choosen指令,我在这里找到了一个呢?”钱德尔马尼,谢谢,但我想写我自己的。无论哪种情况,如果我调用$scope.$watch中的$element.choosed,则link中scope.opts变量上的$scope.$watch似乎可以工作