假设我有一个简单的指令:
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
是未定义
,我的指令不会将其绑定(bind)到隔离范围。
<my-dir my-dir-var="vm.var"></my-dir>
因此,为了使其正常工作,我使用 ng-init 来设置 vm.var 的默认值,然后绑定(bind)到隔离范围有效。
<my-dir my-dir-var="vm.var" ng-init="vm.var = var || 0"></my-dir>
问题是,如何改进我的指令,以便摆脱 ng-init
而 vm.var
仍然具有约束力,即使它是 未定义
最初。
最佳答案
你可以这样做:
var directive = {
bindToController: true,
controller: function(){
this.myDirVar = this.myDirVar || 0;
},
controllerAs: 'vm',
template: '<button ng-click="vm.myDirVar = 1">',
scope: {
myDirVar: '='
}
};
如果 Controller 没有问题。
关于javascript - 自定义指令内 ngInit 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500033/