Javascript angularJS变量更改错误
好吧,这看起来很奇怪 我有一个目录,里面用一个名为Javascript angularJS变量更改错误,javascript,angularjs,Javascript,Angularjs,好吧,这看起来很奇怪 我有一个目录,里面用一个名为items的数组中的ng repeat填充了项目,当用户选择一个项目时,会出现一个对话框,询问用户一些额外的信息(刚才,只有一个新的用户名),当他们点击提交时,会调用一个addToCart(item)函数并传递所选项目 作为函数的一部分,它将项对象中的Question[]变量更改为如下Question=“Question:answer” 奇怪的是,这个函数做的第一件事就是将传递的项打印到日志中。当它运行时,它显示函数已经运行。下一行打印出item
items
的数组中的ng repeat
填充了项目,当用户选择一个项目时,会出现一个对话框,询问用户一些额外的信息(刚才,只有一个新的用户名),当他们点击提交时,会调用一个addToCart(item)
函数并传递所选项目
作为函数的一部分,它将项
对象中的Question[]
变量更改为如下Question=“Question:answer”
奇怪的是,这个函数做的第一件事就是将传递的项打印到日志中。当它运行时,它显示函数已经运行。下一行打印出items
数组,该数组显示对传递的项所做的更改已应用于原始项
据我所知,传递的变量被视为原始值no?0.o 谁能看出我做错了什么?。。。或者你对解决这些问题有什么想法 代码如下: HTML:
<div class="panel-footer" ng-show="cat.itemHasQuestions(item)">
<a href="" class="btn btn-primary" data-toggle="modal" data-target="#cartDataU" ng-click="cat.selected = item">Add to order</a>
<input class="pull-right" type="number" value="1" min="0" ng-model="item.qty"/>
<label class="pull-right">QTY </label>
</div>
<div id="cartDataU" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Please provide more details.</h4>
</div>
<div class="modal-body">
Content:
<form>
<input type="text" ng-repeat="info in cat.selected.Question track by $index" placeholder="{{info[0] + '...'}}" class="form-control" ng-model="cat.selected.answer[$index]">
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-block" data-dismiss="modal" ng-click="cat.addToCart(cat.selected, 'user')">submit</button>
</div>
</div>
</div>
</div>
数量
&时代;
请提供更多详情。
内容:
提交
以及addToCart函数:
this.addToCart = function(item, cat){
console.log("====================");
console.log(item);
console.log(catCon.items);
console.log("====================");
if(item.qty == undefined || item.qty <=0){
//console.log("qty undefined")
item.qty = 1
//console.log("updated QTY");
//console.log(item.qty);
}
/* console.log(item); */
if(catCon.itemHasQuestions(item, false, "Code: addtocart") == true){
/* console.log("================");
console.log(item.Question);
console.log("================"); */
qa = "";
for(i = 0; i<item.Question.length; i++){
if(i < item.Question.length-1){
qa += item.Question[i][0] + ":" + item.answer[i] + ",";
}else{
qa += item.Question[i][0] + ":" + item.answer[i];
}
}
item.Question = qa;
}else{
// console.log("Question is a string in an array, making string in string xD")
item.Question = "";
}
if(catCon.itemIsInCart(item.Name)){
catCon.cart[catCon.findItemInCart(item.Name)].qty++;
catCon.cart[catCon.findItemInCart(item.Name)].Question += "," + qa;
}else{
catCon.cart[catCon.cart.length] = item;
}
}
this.addToCart=功能(项目,类别){
console.log(“==================================”);
控制台日志(项目);
控制台日志(catCon.项目);
console.log(“==================================”);
如果(item.qty==undefined | | item.qtyNope,则传递的对象是对列表上对象的引用,而不是其副本
您可以使用angular.copy()为购物车深度复制对象并进行修改。不,传递的对象是对列表中对象的引用,而不是它的副本
您可以使用angular.copy()为购物车深度复制对象并进行修改。您能生成一个复制此对象的plunker吗?请添加一个片段!“据我所知,传递的变量被视为原始值的副本否?”这不一定正确。如果传递的参数是对象,则通过引用传递,这意味着它将更改原始值。能否生成一个复制此参数的plunker?请添加一个片段!“据我所知,传递的变量被视为原始值的副本否?”这不一定正确。如果传递的参数是对象,则通过引用传递,这意味着它将更改原始参数。