Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:使用ng repeat与外部插件集成指令_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript AngularJS:使用ng repeat与外部插件集成指令

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

我想构建一个将下拉选择链接到外部jquery插件的指令

这是指令的模板URL视图的代码:

<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而不是ngOptions

Angular没有任何机制来可靠地检测DOM渲染的时间。您最好使用$timeout。“你为什么不看看choosen指令,我在这里找到了一个呢?”钱德尔马尼,谢谢,但我想写我自己的。无论哪种情况,如果我调用$scope.$watch中的$element.choosed,则link中scope.opts变量上的$scope.$watch似乎可以工作