为了使两个控制器在Angular中彼此通信,建议创建一个公共服务,使两个控制器均可访问该服务。我试图用一个非常简单的fiddle进行说明。根据您按的是哪个按钮,该应用程序应该在按钮下方定制消息。

那为什么不起作用呢?我是否缺少明显或更基本的东西?

的HTML

<div ng-controller="ControllerOne">
  <button ng-click="setNumber(1)">One</button>
  <button ng-click="setNumber(2)">Two</button>
</div>
<div ng-controller="ControllerTwo">{{number}} was chosen!</div>


的JavaScript

var app = angular.module('app', []);

app.factory("Service", function () {
  var number = 1;
  function getNumber() {
    return number;
  }
  function setNumber(newNumber) {
    number = newNumber;
  }
  return {
    getNumber: getNumber,
    setNumber: setNumber,
  }
});

function ControllerOne($scope, Service) {
  $scope.setNumber = Service.setNumber;
}

function ControllerTwo($scope, Service) {
  $scope.number = Service.getNumber();
}

最佳答案

尝试在控制器中创建手表:

$scope.$watch(function () { return Service.getNumber(); },
   function (value) {
       $scope.number = value;
   }
);


这是一个工作的小提琴http://jsfiddle.net/YFbC2/

08-19 01:17