簡體   English   中英

自定義指令內ngInit的替代方法

[英]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.varundefined ,則我的指令不會將其綁定到隔離的作用域。

<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-initvm.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM