在Angular

时间:2016-04-30 00:10:04

标签: javascript jquery angularjs twitter-bootstrap

我使用this Bootstrap plugin将复选框变为一对按钮。当页面加载之前复选框存在时,它按预期工作(页面的一部分'初始HTML);但是,我需要它在Angular动态创建复选框时运行,就像设置editIndex时一样,如下面的函数所示:

ModalController.prototype.edit = function($index)
{
    this.editIndex = $index;
    $(":checkbox").checkboxpicker();
}

当我调用上面的函数时,实际创建按钮的函数不会被调用;它似乎是推迟的。如何调用在页面加载后创建的复选框上实际创建按钮的功能?

1 个答案:

答案 0 :(得分:2)

我认为您应该使用$timeout服务来延迟$(":checkbox").checkboxpicker();的执行,直到angular完成呈现模板为止。

ModalController.prototype.edit = function($index)
{
    this.editIndex = $index;
    $timeout(function(){
        $(":checkbox").checkboxpicker();
    });
}

为checkboxpicker创建自定义指令可能是更好的解决方案。像

这样的东西
myApp.directive('checkboxPicker', function(){
    return {
        restrict: 'A',
        link: function(scope, el){
            $(el).checkboxpicker();
        }
    }
});

然后在<input type="checkbox" checkbox-picker>

等模板中使用它