我有两个控制器和一个工厂。我正在尝试从controller1更新工厂中的值以查看controller2上的更新。 Controller2是我的侧边栏的控制器。
控制器1:
$scope.proyectoLoad = ProyectoLoadedFactory.getProyectoLoaded();
$scope.setDefault = function () {
$scope.proyectoLoad = $("#valueProyecto").val();
$("#small").modal("hide");
};
$scope.$watch('proyectoLoad', function (newValue, oldValue) {
ProyectoLoadedFactory.setProyectoLoaded(newValue);
}, true);
厂
var proyectoLoaded = -1;
var returnFactory = {
getProyectoLoaded: function () {
return proyectoLoaded;
},
setProyectoLoaded: function (idProyecto) {
proyectoLoaded = idProyecto;
}
};
return returnFactory;
和控制器2:
$scope.proyectoLoaded = ProyectoLoadedFactory.getProyectoLoaded();
$scope.$watch(ProyectoLoadedFactory.getProyectoLoaded(), function (oldValue, newValue) {
$scope.proyectoLoaded = newValue;
}, true);
我的工厂正在更新其值,但在控制器2上我没有看到任何变化..它保持-1值。
提前致谢。
答案 0 :(得分:1)
你的吸气者和制定者正在妨碍双向绑定...
简化您的工厂,以便它只管理返回对象中的值
var proyectoLoaded = -1;
var returnFactory = {
proyectoLoaded: proyectoLoaded
};
return returnFactory;
然后您的Controller2可以简化为只将工厂返回的对象分配给范围...
$scope.proyectoLoaded = ProyectoLoadedFactory;
现在,当该对象的值在工厂中发生变化时,您的控制器中将会看到该更改。
以下是CodePen
的示例