混淆了$ scope和controller以及$ mdDialog

时间:2015-07-11 13:25:51

标签: angularjs angular-material

所以,我试图使用$ mdDialog并且似乎无法将值传递给控制器​​

我的电话是这个

function myCtrl($mdDialog) {
    var ctrl = this;
    ctrl.showModal = function(item) {

        $mdDialog.show({
              controller: modalController,
              controllerAs: 'controller',
              locals: { data: {value: item}},

              templateUrl: '/myModal.html',

              parent: angular.element(document.body)

            })

            .then(function(answer) {
              console.log("'#1",answer);
            }, function() {
              console.log("cancelled");
            });


    };
}

function modalController($scope,data) {
    console.log(data);
}

从ng-click调用showModal(),传入一个值(即ng-click =" ctrl.showModal(10)")

当我按下按钮时,我在控制台中得到以下内容..

anonymous(expression, locals, later, ident)

我实际上希望看到{值:" 10"}

如何获取数据变量/属性的值?

感谢

更新#1 如果我添加

 bindToController: true,
 foobar: true,

并将控制器定义更改为

function modalController($mdDialog) {
   var controller = this;
    console.log(controller.foobar,controller.locals);
}

我似乎能够传入对$ mdDialog

的调用中指定的任何选项

即如果我说xyz:" abc"那么我可以参考controller.xyz,它确实是" abc"

这是有效的吗?它没有味道......

更新#2

解决了原来的问题:我用

指定了modalController
modalController.$inject['$scope','$controller'] 

意外地在文件的顶部 - 所以事情被搞砸了。

我更正了

modalController.$inject['$scope', '$mdDialog', 'data'];

我也有错误的参数传递给函数,应该是

function modalController($scope,$mdDialog,data)

所以,我原来的问题已经解决了。

但是,我仍然对更新#1感兴趣,当使用bindToController时我可以在选项中设置任何属性

0 个答案:

没有答案