gpt4 book ai didi

angularjs - 模块值未更新

转载 作者:行者123 更新时间:2023-12-03 09:16:51 24 4
gpt4 key购买 nike

我在模块中定义了一个值,我在一个 Controller 中更改了该值。问题是该值没有在另一个 Controller 中更新。

var app = angular.module('app',[]);

app.value('value', 0);

app.controller('AdditionController', [
'value',
function (value) {
this.add = function (ammount) {
console.log('Value was equal to ' + value);
value += ammount;
console.log('Value no equals to ' + value);
};
}
]);

app.controller('PrintingController', [
'value',
function (value) {
this.print = function () {
console.log('Printer thinks that the value equals ' + value);
};
}
]);

仅从第一个 Controller 的 Angular 来看该值正在更改,而从第二个 Controller 的 Angular 来看则没有。如何强制更新第二个 Controller 中的值?示例fiddle .

最佳答案

这是因为 valuenumber 的类型,它是原始类型。

字符串、 bool 值、数字等基本类型都是按值传递,这意味着变量值将被复制并传递,但不会传递引用(即指针)。

要解决您的问题,您应该将的类型从数字更改为对象

app.value('value', {val: 0});

这是一个正在运行的 JSFiddle。

http://jsfiddle.net/3puss60r/

每当遇到值不更新的问题时,请考虑一下类型、对象和数组都是通过引用传递的。

关于angularjs - 模块值未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520851/

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