角度指令(ngclick not firing)

时间:2016-01-24 05:08:41

标签: angularjs

我是Angular的新手,我一直致力于小项目。我有关于指令和ng-click的问题。

每次我点击div标签来设置setlock()函数时,它都不会触发。这可能是由我的指令和控制器在单独的文件中引起的吗?有没有办法使用链接来完成这项工作:?

感谢。

Directive.js

(function(){
'use strict';

angular
    .module('widget.ballslot')
    .directive('ballSlot', ballSlot);

function ballSlot(){

    var directive = {
        restrict: 'E',
        scope: true,
        templateUrl: 'app/widgets/ballslot.html',
        controller: 'Ballslot',
    }
    return directive;
}
})();

Controller.js

(function(){
'use strict';

angular
    .module('widget.ballslot')
    .controller('Ballslot', Ballslot);

function Ballslot() {
    var vm = this;

    vm.locked = true;

    function setlock() {
        vm.locked = !vm.locked;
    };

};
})();

page.html中

<div data-ng-controller='Ballslot as vm' class='ball'>
<div id='background-purple' ng-click='vm.setlock()'>
   <i class="fa fa-lock" ng-hide="vm.locked"> </i>
   <i class="fa fa-unlock-alt" ng-show="vm.locked"></i>     
</div>
</div>

1 个答案:

答案 0 :(得分:2)

看起来html无法访问setLock函数。这是因为它是一个私有函数而不是通过vm公开。

尝试更改

function setlock() {
    vm.locked = !vm.locked;
};

vm.setlock = function() {
    vm.locked = !vm.locked;
};