【问题标题】:undefined value for parameter in directive using controllerAs使用控制器的指令中参数的未定义值
【发布时间】:2015-11-19 10:00:16
【问题描述】:

我几乎不好意思问这个问题,但经过几个小时的尝试,我找不到这个问题的原因。

简单的指令,只是单向传递一个参数。如果我在控制器中使用 $scope 参数的值在那里,但是当我切换到 controllerAs 和 bindToController 以摆脱 $scope 时,参数是未定义的。

这是我的代码,也是fiddle

<my-directive param="foo"></my-directive>

angular
    .module("app",[])
    .directive('myDirective', myDirective);

function myDirective() {
    return {
        restrict: 'E',
        scope: {
            param: '@'
        },
        controller: function() {
            var vm = this;
            vm.foo = vm.param + ' foo2';
        },
        controllerAs: 'vm',
        bindToController: true,
        template: '{{vm.foo}}'    
    }
}

我做错了什么? 非常感谢,

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    我相信您使用的是过时的语法 - bindToController 已更改 - 见下文

    function myDirective() {
        return {
            restrict: 'E',
            // **********************
            scope: {},
            bindToController: {
                param: '@'
            },
            controller: function() {
                var vm = this;
                vm.foo = vm.param + ' foo2';
            },
            controllerAs: 'vm',
            template: '{{vm.foo}}'    
        }
    }
    

    【讨论】:

    • 谢谢,西蒙,但在我的小提琴中,我使用的是 angular 1.2,我认为它应该可以正常工作。
    • 你想用代码来解决问题,而不是之前的迭代吗?
    • 好的,我用 1.4 测试过,它按你说的那样工作;我之前确实以这种方式对其进行过测试,但显然我的构建中的一些错误是没有将库从 angular 1.2 更新到 1.4
    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多