反映整个应用程序中工厂的变化

Reflecting changes in a factory across the application

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

DataStore-factory.js

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

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

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

如果我 console.log 在应用程序的其他地方输出该值,它会分别显示为 6 或 9。但是在视图中(示例-view.html)如果我使用

{{dataVal.val1}}

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

我已经为此苦苦思索了很长时间,所以这可能需要一双新的眼睛。作为附加附录,我想请求 Internet 上的任何资源,也许您曾经专门了解为什么上述情况不起作用以及我需要学习什么才能在将来避免这种情况。

这不是更新,因为在您的控制器中,您正在装模作样。如果您想要刷新数据,则必须改为绑定。

在您的数据存储上:

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}}

这样,您的 controller/View

中就会有更新后的值