2016-01-26 15 views
0

我使用ngRepeat间隔推送,但我是相同的模型(改变值)。模型更改时,是不是更新ngRepeat值的方法? 实施例:Angular如何不更新视图中的值

$scope.example = 5; 
$scope.exampleArray = []; 
$scope.pushExample = function() { 
    $scope.exampleArray.push($scope.example); 
} 

在HTML只是简单ngRepeat上exampleArray。让我们想象一下,我们所谓的pushExample()现在我们的看法是:

5 

现在我们正在改变$ scope.example至6和调用pushExample()一次。现在的观点是:

6 
6 

但我想收到:

5 
6 

如何实现的呢?
更新:
HTML实现:

<ul><li ng-repeat="example in exampleArray track by $index">{{example}}</li></ul> 
+0

我不知道你想达到什么目的,但是当你在一个数组中推动某些东西时,它不应该抹去其中的其他项目。这里是一个例子:https://jsfiddle.net/kh9zox18/ – Michelangelo

+0

在事件上做到这一点。像* if(something){do} * –

+0

可以显示你的html实现吗? – Batuta

回答

2

由于你使用的是相同的变量名example有问题。你只需要更改名称:

<ul><li ng-repeat="ex in exampleArray track by $index">{{ex}}</li></ul> 

example已经在你的范围中设置的变量,从而显示而非阵列项目。

+1

这是正确的答案。 Angular无法区分作为数组对象的示例和绑定示例。 – Michelangelo

+0

从@Mikey(https://jsfiddle.net/kfLcuttL/)获得此小提琴的修改版本后,我们看到名称不存在冲突。 ng-repeat指令的范围为'example'定义了一个值,覆盖了ng-repeat $范围的原型......所以,它不应该是你的应用程序中唯一的问题 –

0

$scope.exampleArray.push(angular.copy($scope.example))推新的参考应该做的伎俩。

+0

在这种情况下,这真的不是必需的... – Michelangelo

+0

我认为这篇文章是关于在双向绑定的情况下改变视图中的值,然后再按一个按钮(例如)。所以应该有必要复制这个值,以便在双向绑定和数组中不使用相同的引用(如果在对象上工作,而不是在原语上) –

+0

是的我做了一个完全按照你说的工作的小提琴,没有副本https://jsfiddle.net/kh9zox18/1/ – Michelangelo

相关问题