gpt4 book ai didi

javascript - ng-repeat - 一旦弹出,就无法推送

转载 作者:行者123 更新时间:2023-11-28 13:32:59 25 4
gpt4 key购买 nike

我在 Angular 中遇到一个小问题,我有一个表,其中的行绑定(bind)到 Controller 内部的数组,如下所示:

<div ng-controller="MyCtrl">

<input type="button" value="Pop" ng-click="popone()" />
<input type="button" value="Push" ng-click="pushone()" />

<table>
<tr ng-repeat="n in myLiveArray">
<td>{{n.a}}</td>
<td>{{n.b}}</td>
</tr>
</table>
</div>

这是 Controller :

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

function MyCtrl($scope) {
var myArray = [];

var a = {a:2,b:0};
var b = {a:3,b:2};
var c = {a:4,b:2};
var d = {a:5,b:3};
var e = {a:6,b:4};

myArray.push(a);
myArray.push(b);
myArray.push(c);
myArray.push(d);
myArray.push(e);

$scope.myArray = myArray;

var myLiveArray = [];
$scope.myLiveArray = myLiveArray;

for(var i = 0; i < myArray.length; i++){
$scope.myLiveArray.push($scope.myArray[i]);
}

$scope.popone = function(){
$scope.myLiveArray.pop();
$scope.count--;
}

$scope.pushone = function(){
$scope.myLiveArray.push($scope.myArray[$scope.count]);
$scope.count++;
}
}

JSFiddle 是 here .

问题是,当对象从数组中弹出时,绑定(bind)会按预期工作并且 DOM 会更新,但是当您尝试将同一对象推回数组时,这就不起作用了。

如果我直接绑定(bind)到值类型数组,我可以随意推送和弹出,并且表会以两种方式更新,但在这种情况下我只能弹出。

有人能解释一下这是为什么吗?我对 Angular 还很陌生,干杯。

最佳答案

您的代码确实有效,只是您没有将任何具有预期值的内容推送到数组中,因为计数未定义,因此数组充满了“未定义”。如果您按下然后单击弹出,您会发现似乎没有发生任何事情,而实际上,它是从未定义的之一中弹出的。如果您在弹出和推送功能中添加一些警报,您可以看到这种情况发生。

将其添加到 Pushone:

alert($scope.count+" "+$scope.myArray[$scope.count]);

返回:每次点击推送时未定义未定义。

当您实际将某些东西推到那里时,它会按预期工作。

初始化计数,并确保它保持在范围内,你应该很好。

关于javascript - ng-repeat - 一旦弹出,就无法推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23475689/

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