首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AngularJS中改变不同控制器的形式值

如何在AngularJS中改变不同控制器的形式值
EN

Stack Overflow用户
提问于 2016-09-23 12:49:08
回答 1查看 2.7K关注 0票数 1

我有以下html (示例)

代码语言:javascript
复制
<div ng-controller='ctrl-1'>
    <form>
        <input type='text' ng-model='name'/>
    </form>
</div>

和js文件如下:

代码语言:javascript
复制
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中实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-23 12:55:25

虽然可以使用控制器继承或其他方法来实现这一目标,但最佳实践是在服务/工厂中保留该值:

代码语言:javascript
复制
app.service('MyService', function() {

  this.name = 'John';

}

然后,您可以通过将服务注入控制器来访问该服务。

代码语言:javascript
复制
app.controller('ctrl-1', function($scope, MyService) {

  $scope.name = MyService.name;

}

app.controller('ctrl-2', function($scope, MyService) {

  $scope.name = MyService.name;

}

编辑:如果您想在一个控制器中更改名称,并让它在另一个控制器中反映该更改,最好使用一个对象,因为您将在控制器中保存对该对象的引用。

代码语言:javascript
复制
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'
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39661205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档