我正在使用ng-repeat在HTML中创建表单,以从范围中的对象生成表单元素。我还使用该对象在ng-repeat之外生成其他元素。
一个简化的示例在HTML中如下所示:
<div ng-app="App">
<div ng-controller="Ctrl">
<div class="block1">
<form ng-repeat="(key, value) in test">
<label>{{key}}</label>
<input ng-model="value" />
<p>{{value}}</p>
</form>
</div>
<div class="block2">
<p>
{{test.a}}
</p>
<p>
{{test.b}}
</p>
</div>
</div>
</div>
在JS中:
angular.module('App', []);
function Ctrl($scope) {
$scope.test = {
a:"abc",
b:"def"
}
}
在这个例子中,在块2中的文本设置为初始值test.a
和test.b
。输入值和<p>
循环内部的值也被设置为初始值。
当我修改输入中的<p>
值时,ng-repeat块内部的值会正确更新,但<p>
block2中的标签无法更新。
为什么会这样呢?ng-
repeat是否会创建自己的隔离范围?如果是这样,我如何获得控制器级别范围的更新?另外,有人可以解释这种行为背后的想法以及它提供的任何好处吗?
JSFiddle显示问题
ng-repeat
为每个重复项创建一个子范围。结果,您试图将原语传递给子范围,而不会创建对父范围的引用。但是,当您传递对象时,您将传递原始对象引用。
从Angular的一位父亲的嘴中:
ng-model中总是有一个点
这是 Angular创作者提供的
有关Angular最佳实践的精彩视频
(2012/12/11)。请转到第31分钟,详细了解此确切情况
将数据修改为对象数组:
$scope.test = [{ val:"abc",key:'a'}, {val:"def",key:'b'} ]
然后在转发器中:
<form ng-repeat="item in test">
<label>{{item.key}}</label>
<input ng-model="item.val" />
<p>{{item.val}}</p>
</form>
**[DEMO](http://plnkr.co/edit/ymzbgHMdsOEkxmRjPBkG?p=preview)**
问题内容: 嗨,我有一个简单的ng-repeat-start和end用例,并且工作正常,当我想添加一个内部ng-repeat时出现了问题。这是我的代码 内部ng-repeat到td元素中不起作用,在检查html源代码时看到ngRepeat注释,但未创建td元素。 我的丑陋的解决方法(假设我知道该向量的大小)是: 问题答案: 从那时起,我不确定是否使用角度1.1.6,并且在1.1.5或1.0.7
问题内容: 当我尝试更新 ng-click 上的数组以更新ng-repeat的指令项时: selectL2menu() 在控制器上定义为: 单击一级菜单项后,它应立即显示带有相应元素的二级菜单块(通过使用相应值更新数组,请参见下文)。这是我需要在单击时更新的第二级菜单块: 点击事件触发时-我的阵列成功更新。但是,ng-repeat指令未更新我的第二级菜单(基于更新数组)。我尝试使用(和不使用)$
问题内容: 我正在尝试处理ng-repeat循环内的范围问题-我浏览了很多问题,但还无法使我的代码正常工作。 控制器代码: 视图: 这是一个小提琴:http : //jsfiddle.net/cyberwombat/zqTah/ 基本上,我有一个包含多行文本的对象(这是一个传单生成器)。用户可以调整每行文本(文本,字体,大小,颜色等),我想为其创建预览。上面的示例仅显示了输入文本的输入字段,我希望
问题内容: 我想使用父列表(foos)的索引作为子列表(foos.bars)中函数调用的参数。 我发现了有人建议使用$ parent。$ index的帖子,但不是的属性。 如何访问父级的索引? 问题答案: 我的示例代码是正确的,问题出在我的实际代码中。不过,我知道很难找到这样的例子,所以我在回答别人的情况。
问题内容: 我想在内容更改时创建具有自定义行为的列表。我尝试为此创建一个指令,但是我对如何将ng-transclude与ng- repeat指令结合起来感到迷茫。有人可以让我走上正轨吗? HTML: Javascript: 我已经在这里工作了一部分 编辑: 条件: 该项目的模板必须在视图中定义,而不是在指令中定义,并且必须有权访问子作用域中的项目属性。理想情况下,我想像在ng-repeat指令中那
问题内容: 我正在开发一个页面,我需要在其中显示一些框(使用),其中包含频道信息以及显示位置(城市)。 我面临的问题是当我重复第二遍时: 这应该获得第一个ng-repeat的$ index值,并使用显示频道的位置创建一个新数组。它确实做到了。但是,当我使用此数组应用第二个ng- repeat时,它无法正常工作。 说我的html看起来像这样(PS:我需要使用索引值而不是因为我将这些框放到列中) JS