$ mdToast绑定控制器

时间:2016-09-27 09:07:56

标签: angularjs angular-material

我使用Angular Materials $ mdToast服务,但我在访问父控制器时遇到了一些问题。

我有一个名为CalculationsListController

的控制器

在这里我有我的$mdToast实例

$mdToast.show({ templateUrl: 'app/features/settlement/calculations/toast.html', position: 'top right', hideDelay: 0, parent: $document[0].querySelector('#toast-container'), controllerAs: 'vm', bindToController: true });

在模板标记中,我有以下

<md-toast class="error"> <span translate translate-values="{unAllocatedJourneys: vm.unAllocatedJourneys.summary.total}">TOAST_MESSAGE.CALCULATION_REQUEST.UNALLOCATED_JOURNEYS</span> <md-button ng-click="vm.test()"><span translate>TOAST_MESSAGE.CALCULATION_REQUEST.FIND_OUT_MORE</span></md-button> </md-toast>

注意 - 我的vm.test()&amp; vm.unAllocatedJourneys被定义为我的控制器中的属性

从上面可以看出为什么我可能无法在父控制器上访问我的虚拟机属性?

2 个答案:

答案 0 :(得分:1)

我建议使用配置对象上的'locals'字段将值绑定到Toast控制器

$mdToast.show({
    templateUrl: 'app/features/settlement/calculations/toast.html',
    position: 'top right',
    hideDelay: 0,
    parent: $document[0].querySelector('#toast-container'),
    controller: function() {},
    controllerAs: 'vm',
    bindToController: true,
    locals: {
       unAllocatedJourneys: vm.unAllocatedJourneys
    }
});

或使用控制器字段来使用现有控制器

$mdToast.show({
    templateUrl: 'app/features/settlement/calculations/toast.html',
    position: 'top right',
    hideDelay: 0,
    parent: $document[0].querySelector('#toast-container'),
    controllerAs: 'vm',
    bindToController: true,
    controller: vm
});

Toast Documentation

答案 1 :(得分:0)

你应该用当前范围打开你的模态:

$mdDialog.show({
   scope: $scope
});

其中$ scope,是CalculationsListController的范围