gpt4 book ai didi

javascript - 将原始类型和对象传递给 Controller ​​时的差异

转载 作者:行者123 更新时间:2023-11-28 18:27:05 25 4
gpt4 key购买 nike

我发布示例,因为我认为您更容易理解我的问题。

我有这个 HTML 标记

<div ng-app="autoDrops" ng-controller="testController as test">
<div ng-controller="simpleController as simple">
<a href="" ng-click="test.addValue(value, test.testValue)">Add</a>
<a href="" ng-click="test.addValue2(value2, test.testValue2)">Add2</a>
</div>
<a href="" ng-click="test.addValue(value, test.testValue)">Add</a>
<a href="" ng-click="test.addValue2(value2, test.testValue2)">Add2</a>
<p>
{{test.testValue}}
</p>
<p>
{{test.testValue2}}
</p>
<div>

我的 AngularJs Controller 是这样定义的

var autoDrops = angular.module('autoDrops', []);
autoDrops.controller('testController', function ($scope) {
this.testValue = 0;
$scope.value = 1;
this.addValue = function(value, testValue){
//why function not work, if i remove this?
testValue = testValue + value;
}
$scope.value2 = {value:"1"};
this.testValue2 = [];

this.addValue2 = function(value, testValue2){
//this function work with this?
testValue2.push(value);
}
});
autoDrops.controller('simpleController', function ($scope) {
$scope.value = 1;
$scope.value2 = {value:"1"};
});

您可以看到的示例 jsfiddle

最佳答案

正如 @MMHunter 所说,这是因为在第一种情况下,您传递一个简单的值,而在第二种情况下,您传递一个数组。

数组通过引用传递,值通过值传递。

所以如果你想让它发挥作用,请改变

  1. this.testValue = 0;this.t = {testValue : 0};
  2. test.addValue(value, test.testValue)test.addValue(value, test.t)
  3. 还有...
<小时/>
this.addValue = function(value, testValue){
//why function not work, if i remove this?
testValue = testValue + value;
}

this.addValue = function(value, t){
//why function not work, if i remove this?
t.testValue = t.testValue + value;
}
<小时/>

关于javascript - 将原始类型和对象传递给 Controller ​​时的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38913081/

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