2016-09-27 62 views
0

我正在使用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() & vm.unAllocatedJourneys定义了顶部,在我的控制器

从上面的性能,任何人都可以看到,为什么我可能没有访问我的虚拟机性能的父控制器上?

回答

1

我建议使用的配置对象上的“本机”字段中的值绑定到吐司控制器

$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

+0

您好格雷厄姆的范围,其实我已经读了同样的事情,但使用当地人仍然不会工作,因为它是做同样的事情,什么bindToController在做什么。他们提到,使用bindToController绑定我们的局部变量而不必将它们传入 - 'bindToController - bool:将当地人绑定到控制器,而不是将它们传入' – Jackthomson

+1

我已经添加了一个空控制器声明 - 试试。我能够传入一个变量,并通过在我的吐司模板中使用vm.variableName来读取它 –

+0

谢谢格雷厄姆 - 你已经把我放在正确的道路上了很多摆弄这个!顶级人物,感谢您的帮助! – Jackthomson

0

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

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

其中$范围,是CalculationsListController