Javascript AngularJS-服务与控制器对话

Javascript AngularJS-服务与控制器对话,javascript,angularjs,frameworks,Javascript,Angularjs,Frameworks,Angular JS具有非常酷的双向绑定功能,允许在视图更改时自动更新控制器数据(反之亦然)。 今天,我们可以拥有依赖于服务的控制器。 服务是否可能依赖于控制器? 例如,如果服务希望根据自己的意愿从控制器获取某些数据,是否可能 此外,是否可以扩展ng模型变量的范围,以作为变量传递给服务(以及控制器),从而自动保持同步 谢谢。当您为同一对象分配多个变量时,每个变量都是对同一对象的引用 下面是演示。根据用例,这可能不是首选方法 app.controller('MainCtrl', function(

Angular JS具有非常酷的双向绑定功能,允许在视图更改时自动更新控制器数据(反之亦然)。 今天,我们可以拥有依赖于服务的控制器。 服务是否可能依赖于控制器? 例如,如果服务希望根据自己的意愿从控制器获取某些数据,是否可能

此外,是否可以扩展ng模型变量的范围,以作为变量传递给服务(以及控制器),从而自动保持同步


谢谢。

当您为同一对象分配多个变量时,每个变量都是对同一对象的引用

下面是演示。根据用例,这可能不是首选方法

app.controller('MainCtrl', function($scope, MyService) {
    $scope.mainModel = MyService.myObject;
})

app.controller('OtherCtrl', function($scope, MyService) {
    $scope.otherModel = MyService.myObject;
})

app.factory('MyService', function() {
  return {
    myObject: {
      name: 'test'
    }
  }
});
以下两个输入将显示相同的值

<div ng-controller="MainCtrl">
     Name:<input ng-model="mainModel.name">
</div>
<div ng-controller="OtherCtrl">
     Name:<input ng-model="otherModel.name">
</div>

姓名:
姓名:

这两种情况听起来都是一个非常糟糕的想法。尊重应用程序的状态。不要到处传播。“是的,是的,但你们的科学家们太专注于他们是否能做到这一点,以至于他们没有停下来思考是否应该这样做。”-杰夫·戈德布鲁姆,谢谢。如果在服务中发生更改,该更改是否会立即反映在视图中?只要不中断对象引用。如果在服务中重新分配
myObject
,则会使其中断…但更改
myObject.name的值则不会。很容易创建另一个方法来自己尝试,如果您停下来思考这个问题,当您在localhost上键入输入时,每个控制器都已经在这样做了,并且工作正常。谢谢。没有理由不应该。演示效果很好