【发布时间】:2016-09-13 23:10:03
【问题描述】:
我有一个角度应用程序,我想等到数据绑定到选择下拉列表,然后再将 jquery 方法应用于选择下拉列表。
在我之前的相关问题中,我能够使用以下代码成功填充下拉列表。
<select name="shippingState" id="shippingState" ng-model="accountAddresses.shippingState" ng-options ="state.abbreviation for state in states track by state.abbreviation" class="state form-control" size="1">
</select>
现在我想应用 jquery 方法(自定义选择框下拉样式库)。
加载数据时,我可以在浏览器控制台中手动应用该方法。 问题是我只能手动在浏览器控制台中执行操作。
当下拉数据正在获取时,我无法在 Angular 中运行相同的方法。
问题: 如何在 Angular 中完成数据绑定后触发操作?
编辑 - 我创建了一个指令并修改了我的 html 以触发该指令。
我仍然没有得到自定义样式的元素。
链接到根控制器的指令
directive('onDataBind', function (id) {
alert(id);
function link(elem, id) {
elem.ready(function(id){
$scope.CreateDropDown(id);
});
}
})
HTML 修改
<select name="billingState" id="billingState" ng-model="accountAddresses.billingState" ng-options ="state.abbreviation for state in states track by state.abbreviation" on-data-bind="CreateDropDown('billingState')" class="state form-control" size="1">
</select>
在范围级别创建下拉菜单
$scope.CreateDropDown = function(id){
$("#"+id).selectbox();
//selectbox is the following library - https://github.com/olivM/jQuery-Selectbox
}
【问题讨论】:
-
使用指令和
$timeout()。 -
@Lex,你打败了我。谢谢您的帮助。请查看修改。
-
我还没有对这个指令采取任何行动。我需要将作用域注入函数链接吗?
-
什么是
CreateDropDown()?那是你范围内的一种方法?我以为你想调用一些 jQuery 函数?此外,这不是您创建指令的方式。 -
指令构造函数都错了,指令应该返回一个具有
link..template等属性的对象