这是我的模态函数:
vm.openUpdateStateModal = function (nextState, idea) {
$scope.nextState = nextState;
$scope.idea = idea;
$scope.modalWindowOpen = true;
$scope.modalInstance = $modal.open({
templateUrl: 'updateStateModal',
windowClass: 'updateStateModal',
scope: $scope
});
$scope.modalInstance.result.then(function () {
$scope.updateState(nextState, idea);
});
$scope.modalInstance.result.finally(function () {
$scope.modalWindowOpen = false;
});
};
我不想为我的模态设置另一个控制器,这就是为什么我只给我的 $scope 作为参数,而不是单独映射参数。所以在视图方面,我可以使用所有的 $scope 变量。
昨天我将控制器更新为 controllerAs 语法,如下所示:
angular.module('app')
.controller('IdeaCtrl', function ($scope, ...) {
var vm = this;
...
现在我怎样才能使这个模态函数适应这个新语法?我面临的挑战是:我不止一次地重用模态窗口的视图,也在我的主视图上(没有模态)。而且这个视图已经适应了新的语法“vm.data”而不是“data”。
我试图将我的 vm 作为范围,但它不起作用。我该如何处理?
编辑:
我已将我的功能更改为:
vm.openUpdateStateModal = function (nextState, idea) {
$scope.nextState = nextState;
$scope.idea = idea;
$scope.modalWindowOpen = true;
$scope.modalInstance = $modal.open({
templateUrl: 'updateStateModal',
windowClass: 'updateStateModal',
controller: 'IdeaCtrl as vm',
scope: $scope
});
$scope.modalInstance.result.then(function () {
$scope.updateState(nextState, idea);
});
$scope.modalInstance.result.finally(function () {
$scope.modalWindowOpen = false;
});
};
所以我添加了这一行:
controller: 'IdeaCtrl as vm',
现在看来还可以。但我仍然必须使用作用域中的想法和下一个状态变量。我怎样才能使用来自 vm 的那些?