反映应用程序中工厂的更改

时间:2015-08-06 08:28:54

标签: angularjs data-binding factory

到目前为止,我可以从范围内的任何一点获取我的应用程序来更新工厂(DataStore-factory.js)及其值。

数据存储-factory.js

return {
    storedValue: {
        val1: 1,
        val2: 2
    },
    updateValue: function(value1, value2) {
        this.storedValue.val1 = value1;
        this.storedValue.val2 = value2;
    }
}

更新值的控制器(Example-controller.js)

...
DataStoreFactory.updateValue(6,9);
$scope.dataVal = DataStoreFactory.storedValue
...

如果我在应用程序的其他位置调度该值,那么它分别显示为6或9。但是在视图(Example-view.html)上,如果我使用

{{dataVal.val1}}

该值未在视觉上更新我更新工厂。

我已经和它搏斗了很长时间,以至于需要一双新鲜的眼睛。作为附录,我想请求互联网上的任何来源,也许你曾经明确地理解为什么上述情况不起作用以及我需要学习以避免它在未来。

1 个答案:

答案 0 :(得分:1)

这不是更新,因为在您的控制器中,您正在进行修改。如果你想要刷新数据,你必须绑定。

在您的dataStore上:

return {
    storedValue: {
        val1: 1,
        val2: 2
    },
    updateValue: function(value1, value2) {
        this.storedValue.val1 = value1;
        this.storedValue.val2 = value2;
    },
    getStoredValue : function(){
       return storedValue;
    }
}

然后在你的控制器中:

DataStoreFactory.updateValue(6,9);
$scope.getDataVal = DataStoreFactory.getStoredValue;

之后,您可以通过这种方式获得价值:

var val1 = $scope.getDataVal().val1;
var val2 = $scope.getDataVal().val2;

您也可以在HTML中使用此语法:

{{getDataVal().val1}}

这样,您将在控制器/视图中获得更新的值