Angularjs 将服务属性绑定到控制器作用域

Angularjs 将服务属性绑定到控制器作用域,angularjs,service,angularjs-scope,angularjs-service,angularjs-controller,Angularjs,Service,Angularjs Scope,Angularjs Service,Angularjs Controller,我有两个控制器使用相同的服务,第一个控制器更改服务上属性的值,我需要第二个控制器知道属性已更改,以在其当前$scope中设置新值。我不想使用广播,有没有一个优雅的方式来做到这一点 谢谢。您可以在angular service中创建一个具有各种可共享属性的对象。您可以使用控制器范围变量直接分配该变量。因此,两个控制器使用的变量参考是相同的,就像我们给出的myCtrl1一样,myCtrl2在变量范围内只有一个副本。因此,一个变量中的更改会更新另一个变量 标记 <body> <d

我有两个控制器使用相同的服务,第一个控制器更改服务上属性的值,我需要第二个控制器知道属性已更改,以在其当前$scope中设置新值。我不想使用广播,有没有一个优雅的方式来做到这一点


谢谢。

您可以在angular service中创建一个具有各种可共享属性的
对象。您可以使用控制器范围变量直接分配该变量。因此,两个控制器使用的变量参考是相同的,就像我们给出的
myCtrl1
一样,
myCtrl2
在变量范围内只有一个副本。因此,一个变量中的更改会更新另一个变量

标记

<body>
  <div ng-controller="myCtrl1">
    1st Controller
    <input type="text" ng-model="model1.prop1" />
    <input type="text" ng-model="model1.prop2" />
  </div>

  <div ng-controller="myCtrl2">
    2nd Controller
    <input type="text" ng-model="model2.prop1" />
    <input type="text" ng-model="model2.prop2" />
  </div>

</body>


app.service('dataService', function(){
  var dataService = this;
  dataService.model = {
     'prop1': '',
     'prop2': '',
  }
})
控制器2

app.controller('myCtrl2', function($scope, dataService){
     $scope.model2 = dataService.model;
});

一旦您的值发生更改,就会触发该命令,您可以将其传播到新控制器

$scope.$watch('passValueHere', function(event, passValueHere){
     $scope.controller2Value =   passValueHere;
});

完美的可能复制品!,它不起作用,因为我注册为工厂而不是服务。@user3288840否。同样的事情也可能发生在工厂。。你把工厂和服务搞混了。请仔细阅读这篇文章。
$scope.$watch('passValueHere', function(event, passValueHere){
     $scope.controller2Value =   passValueHere;
});