javascript - 自定义指令内 ngInit 的替代方案

标签 javascript angularjs

假设我有一个简单的指令:

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

相关文章:

javascript - 使 html 图像区域 ‘coord’ 闪烁或发光...

javascript - 使用从 Vue 组件导入?

javascript - 如何通过索引从文件输入(多个)中删除文件

ruby-on-rails - 如何在 Heroku 部署期间运行 "grunt build"(angular 和 ruby​​-on-rails 应用程序)

javascript - 如何在angular js中将数据从一个页面传递到另一个页面

javascript - AngularJS:多个 $http 请求和 .then promise 返回未定义

javascript - 电话间隙 :Angularjs find in Json Array

javascript - 如何上传个人资料图片来解析ionic框架

caching - AngularJS 中防止 IE 缓存的更好方法?

javascript - 在javascript中访问对象数组的值