在md.dialog中使用Factory

时间:2016-07-02 03:25:12

标签: angularjs angular-material

我有一个谷歌素材对话框,我在那里与用户互动。我想在对话框中注入一个工厂并在那里使用它。有没有办法做到这一点?

我尝试将工厂作为局部变量传递。

有什么建议吗?

编辑---------

这是我用来处理对话框的控制器。我将工厂输出到控制台,功能都在那里。不确定为什么叫他们什么都不做。

function DocumentDialogController($mdDialog, locals, chartFactory)
{
    var vm              = vm || this;
    vm.thisItem         = locals.thisItem;

    vm.cancel           = cancel;
    vm.acceptChanges    = acceptChanges;
    vm.selectImage      = selectImage;

    function cancel(){
        $mdDialog.cancel();
    };

    function acceptChanges(desc) {
        $mdDialog.hide(desc);
    };

    function selectImage(imageName) {
        vm.thisItem.imageObj.data.src=imageName;
    };

}

1 个答案:

答案 0 :(得分:0)

将控制器分配给对话框并将工厂注入控制器。

执行以下操作以创建对话框。请注意,controller属性中的字符串是您要使用的控制器的名称。

$mdDialog.show({
    templateUrl: 'partials/example.template.html',
    targetEvent: event,
    controller: 'ExampleCtrl',
    controllerAs: 'vm'
});

创建工厂并将其注入控制器,就像使用任何其他控制器一样。

(function() {
  'use strict';

  angular
    .module('example')
    .controller('ExampleCtrl', ExampleCtrl);

  function ExampleCtrl(ExampleFactory) {
    var vm = this;
    // you can now use the injected ExampleFactory 
  }
  ExampleCtrl.$inject = ['ExampleFactory'];
})();