为什么使用服务的两个控制器之间的通信在 angular 中不起作用?
why doesn't communication between two controllers using service work in angular?
index.html
<body >
<p ng-controller="MainCtrl as mv">Hello {{mv.name}}!</p>
<hr>
<div ng-controller="MainCtrl2 as mv">
<input type="text" ng-model="name">
<button ng-click="mv.setN(name)">submit</button><br>
Hello {{name}}<br>
Hello {{mv.name}}!
</div>
</body>
app.js :
var app = angular.module('plunker', []);
app.service('myService', function() {
var my = this;
my.name = "original";
});
app.controller('MainCtrl', function(myService) {
var mv = this;
mv.name = myService.name;
});
app.controller('MainCtrl2', function(myService) {
var mv = this;
mv.name = myService.name;
mv.setN = function(a) {
myService.name = a;
};
});
为什么服务不能在控制器之间建立通信?我见过一个类似的工厂正在为通信工作的例子。
我的笨蛋:
http://plnkr.co/edit/L5uRHPQiXqQV6K7twHul?p=preview
检查工作演示:http://plnkr.co/edit/cTqJImTLdDwPzGsKxN6W?p=preview
始终使用 Object
共享模型。您的服务应更改为:
app.service('myService',function(){
var my=this;
my.n = {
name: 'paven'
};
my.setN=function(a){
my.n.name=a;
console.log("name change to "+my.n.name);
}
});
index.html
<body >
<p ng-controller="MainCtrl as mv">Hello {{mv.name}}!</p>
<hr>
<div ng-controller="MainCtrl2 as mv">
<input type="text" ng-model="name">
<button ng-click="mv.setN(name)">submit</button><br>
Hello {{name}}<br>
Hello {{mv.name}}!
</div>
</body>
app.js :
var app = angular.module('plunker', []);
app.service('myService', function() {
var my = this;
my.name = "original";
});
app.controller('MainCtrl', function(myService) {
var mv = this;
mv.name = myService.name;
});
app.controller('MainCtrl2', function(myService) {
var mv = this;
mv.name = myService.name;
mv.setN = function(a) {
myService.name = a;
};
});
为什么服务不能在控制器之间建立通信?我见过一个类似的工厂正在为通信工作的例子。 我的笨蛋: http://plnkr.co/edit/L5uRHPQiXqQV6K7twHul?p=preview
检查工作演示:http://plnkr.co/edit/cTqJImTLdDwPzGsKxN6W?p=preview
始终使用 Object
共享模型。您的服务应更改为:
app.service('myService',function(){
var my=this;
my.n = {
name: 'paven'
};
my.setN=function(a){
my.n.name=a;
console.log("name change to "+my.n.name);
}
});