2

解决方案:似乎我的.get()函数调用之前,我可以更新变量'东西',因此它没有显示更新的变量。角度商店值服务访问多个页面

当我测试了它真正的页面上它的工作就像一个魅力:)

最终FIDDLE

注:我添加了返回设置功能立即更新视图。


UPDATE:了我厂好吗工作,但不能坐上开往工厂.SET()函数的值。 FIDDLE


我建立一个手动安装一个USB-网络接口,并且需要储存一些变量来显示多个页面正确的内容(在同一个控制器韧内)。

做了一些研究后,似乎'服务'是做到这一点的正确方法,但我无法让他们工作。

当我将函数放入控制器本身时,它会工作,但当我更改页面时,它会重新设置为'[]'。内部控制,因为我有它现在

功能是:

$scope.isActiveSystem = []; 

$scope.activeSystem = function(name) { 
    $scope.isActiveSystem = name.value; 
} 

有人点我在正确的方向如何把这样的服务中,或给我一个例子来学习,这样我能更好地理解什么是继续?

此外,我应该存储我的数据在工厂或某些服务?

我试图做一个服务:FIDDLE

回答

2

从你的控制器,如果你的重置时,页面加载,这是正常的,你的数据被复位。

您需要: - 注入你的服务为您的控制器

app.controller('myCtrl',['myService',function(myService){ 
 
    
 
    }]);

  • 创建服务get函数中检索变量
的价值

factory.getVal = function(){ 
 
    return val; 
 
};

  • 致电控制器开始get函数为

$scope.isActiveSystem = myService.getVal();

+0

也不要忘了把一个二传手的服务。 – BobDoleForPresident

3

你不远处的解决方案。

说真的,我曾试着记住服务和工厂的区别。最后,两者都可以完全相同的方式使用,以满足相同的要求。

app.factory('dmFactory', function() { 
//name.value should equal to system.value from the controller 
var somethingIWantToRemember = {}; 
return { 
    set: set, 
    get: get 
} 

function get(key){  //You can forget about the key if you want 
    return somethingIWantToRemember[key]; 
} 

function set(key, value){ 
    somethingIWantToRemember[key] = value; 
} 

}); 

和在你的控制器,你只需要调用这样两种功能:

$scope.something = dmFactory.get(key); 

dmFactory.set(key, $scope.something); 
+0

只要在dmFactory.set()中输入时显示静态文本; 仍似乎无法进入.set(somevalue),应该设置点击.. [FIDDLE](http://jsfiddle.net/qh5f55vy/16/) –