Vinculación de variables de Servicio / Fábrica a Controladores

Tengo una variable que será utilizada por uno o más Controladores, modificada por los Servicios. En ese caso, he creado un servicio que mantiene esta variable en la memoria y la comparte entre los controladores.

El problema es: cada vez que la variable cambia, las variables en los controladores no se actualizan en tiempo real.

Creo este violín para ayudar. http://jsfiddle.net/ncyVK/

— Tenga en cuenta que {{countService}} o {{countFactory}} nunca se actualiza cuando incremente el valor del conteo.

¿Cómo puedo vincular la variable Servicio / Fábrica a $ scope.variable en el Controlador? ¿Qué estoy haciendo mal?

No puedes enlazar variables. Pero puede enlazar accesores variables u objetos que contengan esta variable. Aquí está fijo jsfiddle .

Básicamente, debe pasar algo al scope, que puede devolver / mantener el valor actual. P.ej

Fábrica:

 app.factory('testFactory', function(){ var countF = 1; return { getCount : function () { return countF; //we need some way to access actual variable value }, incrementCount:function(){ countF++; return countF; } } }); 

Controlador:

 function FactoryCtrl($scope, testService, testFactory) { $scope.countFactory = testFactory.getCount; //passing getter to the view $scope.clickF = function () { $scope.countF = testFactory.incrementCount(); }; } 

Ver:

 

This is my countFactory variable : {{countFactory()}}

This is my updated after click variable : {{countF}}

No es buena idea vincular los datos del servicio, pero si ya lo necesita, le sugiero que los siga de 2 maneras.

1) Obtenga esos datos no dentro de su servicio. Obtenga los datos dentro de su controlador y no tendrá ningún problema para vincularlos.

2) Puede usar la función Eventos de AngularJs. Incluso puede enviar datos a través de ese evento.

Si necesita más ejemplos aquí, está el artículo que quizás pueda ayudarlo.

http://www.w3docs.com/snippets/angularjs/bind-value-between-service-and-controller-directive.html