假设我有一个简单的指令:
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
仍然具有约束力,即使它最初是undefined
。
答案 0 :(得分:1)
您可以执行以下操作:
var directive = {
bindToController: true,
controller: function(){
this.myDirVar = this.myDirVar || 0;
},
controllerAs: 'vm',
template: '<button ng-click="vm.myDirVar = 1">',
scope: {
myDirVar: '='
}
};
如果控制器不是问题。