AngularJS - 服务与控制器对话

AngularJS - Service talking to Controller

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

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

谢谢。

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

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

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>

DEMO