我有以下html (示例)
<div ng-controller='ctrl-1'>
<form>
<input type='text' ng-model='name'/>
</form>
</div>和js文件如下:
app.controller('ctrl-1',function($scope){
$scope.name = 'john';
});
app.controller('ctrl-2',function($scope){
/*
Here I want to change value of 'name' field which is in 'ctrl-1'
*/
});如何在角度js中实现这一点?
发布于 2016-09-23 12:55:25
虽然可以使用控制器继承或其他方法来实现这一目标,但最佳实践是在服务/工厂中保留该值:
app.service('MyService', function() {
this.name = 'John';
}然后,您可以通过将服务注入控制器来访问该服务。
app.controller('ctrl-1', function($scope, MyService) {
$scope.name = MyService.name;
}
app.controller('ctrl-2', function($scope, MyService) {
$scope.name = MyService.name;
}编辑:如果您想在一个控制器中更改名称,并让它在另一个控制器中反映该更改,最好使用一个对象,因为您将在控制器中保存对该对象的引用。
app.service('MyService', function() {
this.person = {};
this.person.name = 'John';
}
app.controller('ctrl-1', function($scope, MyService) {
$scope.person = MyService.person;
}
app.controller('ctrl-2', function($scope, MyService) {
$scope.person = MyService.person;
$scope.person.name = 'JFK';
//MyService.person will now also be updated in 'ctrl-1'
}https://stackoverflow.com/questions/39661205
复制相似问题