javascript [],[[]] 和 [{}] 在 angularJS 中与 ng-repeat 一起使用时的工作差
Working difference between javascript [],[[]] and [{}] when used with ng-repeat in angularJS
我创建了一个表单来动态添加多个用户信息。它工作正常。但是我心中有一个关于array
和ng-repeat.
array of object
工作的问题,如果我使用$scope.users = [];
和$scope.users=[{}]
,ng-repeat
的工作方式不同。使用 $scope.users = [], view appears blank,
和 $scope.users = [{}] 时,视图将正确显示。我已经为两者创建了小提琴链接。谁能解释一下这里到底发生了什么。
与 $scope.users = [ ] 的链接是:http://jsfiddle.net/9Ymvt/2799/
与$scope.users = [[]]
的链接是:http://jsfiddle.net/9Ymvt/2800/
更新:如果我使用$scope.users = [{}]
,它工作正常,但是数据第一次没有绑定,因为它在addMore users button
中是绑定的。数据仅在我单击 ob [{}]
时绑定这是小提琴链接:http://jsfiddle.net/9Ymvt/2801/
我在想,如果数据与[[]]
绑定,为什么不与$cope.users = [{ }]
绑定;
{}
在其空白ng-repeat
中有一个对象,因此ng-repeat
将遍历数组中的对象。 对象是否为空并不重要。 在这里,您的$scope.users = [ ]
运行 1 次。
但在
users array
,ng-repeat
里面什么都没有,没有什么可以迭代的,所以$scope.users = []
不打算迭代。
将循环它,而 [] 是一个长度为 0 的空数组,因此循环不会运行它。因此,当您使用 [{}] 运行时,将填充表单,因为角度可以遍历数组。
更新:这不是 [] VS{} 的问题。{} 等于 new Object((,[] 等于 new Array((。外部数组,您正在循环的用户,尝试绑定循环的当前元素,在您的情况下是人(来自下面的代码片段(
ng-repeat="person in users"
到 person.name。但是,.name 只能附加到对象而不是数组,因此当您使用 [[]] 时绑定会失败,因为 angular 会尝试将 .name 附加到内部的数组。
第一个$scope.users = [{ }]
是空数组,第二个CC_23只是一个带有一个对象的数组。当你执行ng-repeat时,它会遍历数组中的所有对象,在第一种情况下,数组是空的,这就是视图为空的原因。
这:
$scope.users = [{ }]
等于:
$scope.users = [];
$scope.users.push({ });
它只是包含项的数组声明。
它非常简单:),
$scope.users = [] 是一个空数组而$scope.users = [{}] 是一个具有空对象的数组。
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- document.title函数可以't设置它与php一起工作
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- 非常简单的js测试;Don’不要和Minko一起工作
- 无法使我的文本参数与我的查询一起工作
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 无法使vash 0.8.0与express 4.12.3一起工作
- 如何使Angular JS控制器与指令一起工作
- 无法使autocompletion与bootstrap和php代码点火器一起工作
- 注入的元素和jQuery脚本.如何让他们一起工作
- 两个独立工作的javascript函数,但不能一起工作
- 角度和砖石一起工作
- Node http-proxy-middleware 不能与本地服务器一起工作
- jQuery脚本不想一起工作
- page.js使examples/hash与hashbang:true一起工作
- javascript使jquery倒计时与UTC时间一起工作
- jQuery.not()选择器无法与类一起工作
- Rails3-可排序列表不能与wysihtml5一起工作
- 替换匹配函数给出了未定义的错误,但它与替换一起工作
- 按钮上的数据加载消息无法与ajax调用一起工作