varios otro modulos llamar funcion entre controladores controlador conectar comunicar comunicacion componentes javascript angularjs angularjs-scope angularjs-controller angularjs-factory

javascript - otro - angularjs cambia el objeto de fábrica compartido entre los controladores



modulos angularjs (1)

¿Es posible actualizar la variable de ámbito que apunta a un objeto de fábrica, después de actualizar el objeto de fábrica? Si hay 2 controladores angulares que comparten un objeto de fábrica, si uno de los controladores cambia el objeto de fábrica, no se refleja en la variable de alcance del otro controlador.

Ej: http://jsfiddle.net/zjm0mo10/ El resultado será

"Factory foo.bar es 555" en lugar de

"Factory foo.bar es 666"

var app = angular.module(''myApp'', []); app.factory(''testFactory'', function(){ return { foo: {bar:555}, } }); function HelloCtrl($scope, testFactory) { $scope.bar = testFactory.foo.bar; $scope.clickme = function() { alert("testFactory.foo.bar "+testFactory.foo.bar); $scope.$apply(); } } function GoodbyeCtrl($scope, testFactory) { testFactory.foo.bar = 666; } <html> <div ng-controller="HelloCtrl"> <p>Factory foo.bar is {{bar}}</p> <button ng-click="clickme();">btn</button> </div> </html>


Establezca las propiedades del alcance en testFactory.foo , por ejemplo

$scope.foo = testFactory.foo;

y

<p>Factory foo.bar is {{foo.bar}}</p>

De esta forma, la propiedad del ámbito hará referencia a testFactory.foo que permanecerá intacto (no sobrescrito).

Además, debe eliminar $scope.$apply() clickme() de clickme() . ng-click ya desencadena un ciclo de resumen.

http://jsfiddle.net/zjm0mo10/1/