问:复制并粘贴测试的待办事项列表
$范围。todos = [
{ "name" : "打扫房子" }, { "name" : "给狗浇水" }, { "name" : "喂草坪" }, { "name" : "pay dem bills" } , { "name" : "run" }, { "name" : "swim" } ];
答:ng-model、ng-hide 和 ng-show 的变量是在属性本身中声明的。所以当我们写:
< input ng-model = "todo.completed" type = "checkbox" />
todo.completed(和todo)正在内联创建。一旦元素属性被触发(在这种情况下,当我们单击复选框时)该变量存在于该角度控制器的范围内,而无需在控制器代码本身中声明它。根据我的理解,通常最好的做法是在控制器中声明这些变量,因为如果我们不这样做,则必须先触发该属性,然后我们才能在范围中看到模型,但 Huston 不是重点他想在课程的那节课上做到这一点。
现在我们在 ng-repeat 中,我们在控制器中声明 todos,并将其附加到 $scope.todos,这样我们就可以在作用域中访问它。但正如他所解释的,当我们声明:
< div ng-repeat = "todo in todos" >
<!--我们要重复的所有内容都在这里,每个重复的项目都有自己的todo对象--> </ div >
我们在控制器中使用 $scope.todos 变量来创建多个克隆对象,所有对象都有自己不同的子作用域,每个都有一个单独的 todo 对象。