[英]Alternative for ngInit inside custom directive
假設我有一個簡單的指令:
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
。
您可以執行以下操作:
var directive = {
bindToController: true,
controller: function(){
this.myDirVar = this.myDirVar || 0;
},
controllerAs: 'vm',
template: '<button ng-click="vm.myDirVar = 1">',
scope: {
myDirVar: '='
}
};
如果有控制器則不是問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.