Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 未更新模块值_Angularjs_Variables - Fatal编程技术网

Angularjs 未更新模块值

Angularjs 未更新模块值,angularjs,variables,Angularjs,Variables,我在一个模块中定义了一个值,我在一个控制器中更改了该值。问题在于,该值未在其他控制器中更新 var app = angular.module('app',[]); app.value('value', 0); app.controller('AdditionController', [ 'value', function (value) { this.add = function (ammount) { console.log('Value was equal t

我在一个模块中定义了一个值,我在一个控制器中更改了该值。问题在于,该值未在其他控制器中更新

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);
    };
  }
]);

仅从第一个控制器而不是第二个控制器的角度更改该值。如何在第二个控制器中强制更新值?示例。

这是因为
value
number
的类型,这是一种基本类型

字符串、布尔值、数字等基本类型都是通过值传递的
,这意味着变量值将得到复制和传递,而不是引用(即指针)

要解决您的问题,您应该将
值的类型从number改为object

app.value('value', {val: 0});
这是一个正在工作的JSFIDLE


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

这是因为
value
number
的类型,这是一种基本类型

字符串、布尔值、数字等基本类型都是通过值传递的
,这意味着变量值将得到复制和传递,而不是引用(即指针)

要解决您的问题,您应该将
值的类型从number改为object

app.value('value', {val: 0});
这是一个正在工作的JSFIDLE


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

请阅读有关AngularJS中的工作原理的文档

您正在控制器中注入值,但值不会更改,因为请求可注入的ID总是为相同的ID返回相同的内容

你必须使用

app.value('value', {myValue: 0});
这将返回一个名为value的对象,您可以更改“myValue”的值


这里是工作小提琴:

请阅读有关AngularJS工作原理的文档

您正在控制器中注入值,但值不会更改,因为请求可注入的ID总是为相同的ID返回相同的内容

你必须使用

app.value('value', {myValue: 0});
这将返回一个名为value的对象,您可以更改“myValue”的值


这里是工作fiddle:

所以没有本地方法通过引用控制器传递数字?数字本身是基本类型,任何语言中的基本类型都只通过值传递。所以没有本地方法通过引用控制器传递数字?数字本身是基本类型,任何语言中的基元类型都将仅通过值传递。