Угловые директивы (ngclick не стреляет)

0

Я новичок в 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>
  • 0
    Пожалуйста, опубликуйте весь код, чтобы мы могли посмотреть.
  • 0
    Прости за это
Показать ещё 2 комментария
Теги:

1 ответ

2
Лучший ответ

Похоже, функция setLock недоступна для html. Это потому, что это частная функция, а не через vm.

Попробуйте изменить

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

К

vm.setlock = function() {
    vm.locked = !vm.locked;
};
  • 1
    Закрыть, но vm.setlock = function() { vm.locked = !vm.locked; }; будет работать лучше. :)
  • 0
    Это не работает, вместо этого отображаются обе иконки.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню