推迟指令的执行,直到ng个选项完成
Defer execution of directive until ng-options completes
我正在Angular模板中创建一个带有以下标记的select元素:
<select name="noOfPeople" ng-model="noOfPeople" ng-options="value for value in [] | range:12">
<option value="">No of people*</option>
</select>
我希望在这个select元素中添加一些自定义样式和功能,为此我使用了Chosen jQuery库。
为了在select元素上初始化CHosen库,我编写了以下指令:
directive('select', function() {
return {
restrict: 'E',
link: function(scope, elm, attrs) {
$(elm).chosen({disable_search: true});
}
}
})
这运行得非常好,Chosen现在已在我的应用程序中的所有<select>
元素上初始化。然而,这似乎不适用于使用ng-options
,因为Chosen创建的div不包括ng-options
生成的任何选项。如果我查看Chrome开发工具中的原始<select>
元素,我可以看到选项正在生成。
我的理论是,在Angular有机会运行ng-options
并在DOM中创建<option>
元素之前,Chosen正在<select>
元素上初始化。
有没有一种方法可以推迟Chosen的初始化,直到Angular完成处理并添加了我想要的所有<option>
元素?
您可以注入并使用$timeout而不延迟地将操作放在浏览器事件队列的末尾(在渲染引擎之后(:
app.directive('select', function($timeout) {
return {
restrict: 'E',
link: function(scope, elm, attrs) {
$timeout(function() {
$(elm).chosen({
disable_search: true
});
});
}
};
});
请注意,本例假设ngOptions的数据在初始化时可用,而不是异步检索。
相关文章:
- AngularJs列表ng单击以选择选项转换
- 如何使用AngularJs禁用ng选项中的选项
- 如何将ng选项的索引作为angularJs中的值传递给模型
- AngularJS ng选项在选择一个选项后删除了默认的空白值
- 当使用select作为标签时,如何使用ng选项禁用angularjs中的选项
- 角度引导选项卡ng如果错误
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- ng选项-用vm替换$scope
- Angularjs-设置不带ng选项的select的默认值
- 角度去抖动(ng模型选项)不起作用
- ng选项-传递键而不是值
- Angular:如何使用ng选项进行四个单独的选择
- 选择框中带有关联的ng模型,选项中带有ng重复
- 使用ng选项,我如何筛选准确解释给定值的内容
- 角度Ng选项错误
- Angular.js通过对象关键点上的ng选项进行跟踪
- 选择/选项 ng-model 未绑定 ng-selected
- Angularjs 选择选项 ng 选择为分配值选择空白选项
- <选项 ng-repeat value={{object}}> 如何强制角度将对象推入模型
- 删除空白选项ng repeat和过滤后的ng选项