我有这个ngDialog模式:
$scope.showMessage = function(size, status, data) {
// open modal page
ngDialog.open({
scope: $scope,
template: 'orderResponse.html',
controller: $controller('OrderResponseModalController', {
$scope: $scope,
responseStatus: status,
responseData: data
}),
className: 'createGroup',
closeByDocument: false,
closeByEscape: false
});
};
因此,基本上,它将打开一个OrderResponseModalController将负责的模态,并向该控制器发送三个值。
此控制器内有此代码:
$scope.message = responseData.message;
$scope.title = responseData.title;
...
$location.path("purchases");
orderResponse.html看起来像这样:
<p>{{ message }}</p>
<h1>{{ title }}</h1>
但是,这些变量的值未显示在浏览器中(仅{{message}})。我认为这是因为$ location.path也在改变Controller $ scope。
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
我不是百分百肯定,但控制者不是单身人士。这意味着每次使用$ location.path(&#34;某些&#34;)更改位置时,都会调用控制器的新实例。这意味着预先在该控制器中设置的所有范围变量都将丢失。
为了在控制器实例之间共享变量,您应该使用服务,因为服务是单例。
以下是我使用的示例:
angular.module('angularApp')
.service('sharedProperties', function () {
var uniEdit = 0;
return {
getUni: function () {
return uniEdit;
},
setUni: function(value) {
uniEdit = value;
}
};
});