Альтернатива для ngInit внутри пользовательской директивы

0

Предположим, у меня есть простая директива:

angular.module('app').directive('myDir', myDir);

function myDir() {

    var directive = {
        bindToController: true,
        controller: null,
        controllerAs: 'vm',
        template: '<button ng-click="vm.myDirVar = 1">',
        scope: {
            myDirVar: '='
        }
    };

    return directive;

}

Если в следующем примере vm.var не undefined, моя директива не будет связывать его с изолированной областью.

<my-dir my-dir-var="vm.var"></my-dir>

Поэтому, чтобы заставить его работать, я использую ng-init для установки значения по умолчанию для vm.var, после чего связывается с изолированной областью.

<my-dir my-dir-var="vm.var" ng-init="vm.var = var || 0"></my-dir>

Вопрос в том, как я могу улучшить свою директиву, чтобы я мог избавиться от ng-init то время как vm.var все равно будет vm.var, даже если он не undefined вначале.

Теги:

1 ответ

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

Вы можете сделать что-то вроде:

 var directive = {
    bindToController: true,
    controller: function(){
        this.myDirVar = this.myDirVar || 0;
    },
    controllerAs: 'vm',
    template: '<button ng-click="vm.myDirVar = 1">',
    scope: {
        myDirVar: '='
    }
};

Если это не проблема с контроллером.

  • 0
    Это действительно работает. Почему-то задумался над решением проблемы: P
  • 0
    Это часто случается со мной!

Ещё вопросы

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