2016-09-27 65 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