Javascript 如何在AngularJS中添加/删除字符串数组

Javascript 如何在AngularJS中添加/删除字符串数组,javascript,arrays,angularjs,data-binding,Javascript,Arrays,Angularjs,Data Binding,我需要将数据绑定到字符串数组。。我需要一系列的指示 我这样做: JS HTML 方向 删除项目 {{$index}} {{方向}} 一切都按预期进行,但我有一个找不到的bug。当您试图直接从输入修改值时,您是不允许的。你写了一篇文章,什么也没发生。(这是通过将ANGULAR的最后一个版本放在JSFIDLE中解决的) 继续:现在您可以修改这些值,但它们不会在模型中更新。如果有人能帮助我,那就太棒了 您可以看到它在这个中工作。当绑定到原语时,Angular的旧版本存在问题。看到这个了吗 因此

我需要将数据绑定到字符串数组。。我需要一系列的指示

我这样做:

JS

HTML



方向 删除项目 {{$index}}
{{方向}}
一切都按预期进行,但我有一个找不到的bug。当您试图直接从输入修改值时,您是不允许的。你写了一篇文章,什么也没发生。(这是通过将ANGULAR的最后一个版本放在JSFIDLE中解决的)

继续:现在您可以修改这些值,但它们不会在模型中更新。如果有人能帮助我,那就太棒了


您可以看到它在这个

中工作。当绑定到原语时,Angular的旧版本存在问题。看到这个了吗

因此,首先将版本更新为Angular的更新版本

ng repeat
创建子作用域。因为
ng repeat=“item in directions”
中的
项是一个原语(即字符串),
修改子范围。这就是为什么在父级中看不到更改的原因

解决此问题的一种方法是创建一个对象数组,而不是字符串,以使其正常工作:

$scope.directions = [{d: "a"}, {d: "b"}, {d: "c"}];
那么您的
将是:

<input ng-model="item.d" />

(我认为另一种方法是使用
ng model=directions[$index]
,但由于某种原因,每次按键后都会失去焦点

更新:@PSL表明,如果您添加
按$index跟踪
),这可能会起作用。

解决方案#1:绑定对象的属性而不是字符串 您不应该直接编辑
item
,而应该更新item的属性

请参见此处的工作示例:

如果您想了解更多信息,请阅读本文:

基本上,不要单独绑定属性,而是在绑定中始终有一个点,即
item.name
而不是
item
。这是由于javascript本身而不是angularjs造成的限制

解决方案2:手动更新模型
如果确实需要,可以使用
ng change
指令手动更新阵列。请参见此处的一个工作示例:

它实际上允许我现在修改输入,但模型中的值没有更新。数据绑定不起作用。我刚刚更新了jsfiddle你的jsfiddle是404@floribon
$scope.directions = [{d: "a"}, {d: "b"}, {d: "c"}];
<input ng-model="item.d" />