Предположим, у меня есть простая директива:
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
вначале.
Вы можете сделать что-то вроде:
var directive = {
bindToController: true,
controller: function(){
this.myDirVar = this.myDirVar || 0;
},
controllerAs: 'vm',
template: '<button ng-click="vm.myDirVar = 1">',
scope: {
myDirVar: '='
}
};
Если это не проблема с контроллером.