Angularjs angular-ui-switch添加了额外的ng-change事件

时间:2014-11-26 07:17:07

标签: angularjs angularjs-directive

我试图为此指令添加额外的ng-change事件属性:

angular.module('uiSwitch', [])

.directive('switch', function(){
    return {
        restrict: 'AE'
        , replace: true
        , transclude: true
        , template: function(element, attrs) {
            var html = '';
            html += '<span';
            html +=   ' class="switch' + (attrs.class ? ' ' + attrs.class : '') + '"';
            html +=   attrs.ngModel ? ' ng-click="' + attrs.ngModel + '=!' + attrs.ngModel + '"' : '';
            html +=   ' ng-class="{ checked:' + attrs.ngModel + ' }"';
            html +=   '>';
            html +=   '<small></small>';
            html +=   '<input type="checkbox"';
            html +=     attrs.id ? ' id="' + attrs.id + '"' : '';
            html +=     attrs.name ? ' name="' + attrs.name + '"' : '';
            html +=     attrs.ngModel ? ' ng-model="' + attrs.ngModel + '"' : '';
            html +=     attrs.ngChange ? ' ng-change="' + attrs.ngChange + '"' : '';
            html +=     ' style="display:none" />';
            html += '</span>';
            return html;
        }
    }
})

我添加了以下行:

html +=     attrs.ngChange ? ' ng-change="' + attrs.ngChange + '"' : '';

但是当我在实现指令时传递一个要调用的函数时,没有任何反应。我做错了什么?

<switch id="question" name="question" ng-model="questionAnswered" ng-chnage="myFunction()" class="green"></switch>

1 个答案:

答案 0 :(得分:4)

您必须传递函数的名称,而不是()调用它,如下所示:

<switch id="question" name="question" ng-model="questionAnswered" ng-change="myFunction" class="green"></switch>