gpt4 book ai didi

angularjs - 为什么 angular.service "private"字段不更新?

转载 作者:行者123 更新时间:2023-12-01 22:30:07 25 4
gpt4 key购买 nike

如果我遵循这种制造工厂的特殊做法:

    myApp.factory('myService', function () {
var somevalue = 2;

var myServiceApi = {
theValue: somevalue,
updatevalue: updateValue
}

return myServiceApi;

function updateValue(newValue) {
somevalue = newValue;
}
});

每次注入(inject)服务时,somevalue 的值总是初始化为 2,即使我之前已经使用 UpdateValue 方法更新了它。但是,如果我对值使用 getter 方法,它会在服务的所有实例中更新。

http://jsfiddle.net/IngoVals/hd1r1bmp/

这里的后台发生了什么?

最佳答案

如您所知,工厂函数只会被调用一次 - angular 将返回相同的对象供 Controller 中工厂的后续使用。

你的 fiddle 实际上并没有测试 somevalue 的值 - 它正在测试

myService.theValue

此属性将返回私有(private)变量 somevalue 的值在实例化时,因此在您的示例中它将始终为“2”。当 somevalue 更改时它不会更改。

setter/getter

myService.getvalue()

返回私有(private)变量some​​value在当前时间的值,所以随着不同的 Controller 更新值而改变。

myApp.factory('myService', function () {
var somevalue = 2;

var myService = {
//equivalent to theValue: 2
theValue: somevalue,
updatevalue: updateValue,
getvalue: getValue
}

return myService;

function getValue() {
return somevalue;
}

function updateValue(newValue) {
somevalue = newValue;
}
});

关于angularjs - 为什么 angular.service "private"字段不更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com