Angularjs 使用$scope时,视图不显示数组数据
以下代码片段在我的视图中不起作用:Angularjs 使用$scope时,视图不显示数组数据,angularjs,Angularjs,以下代码片段在我的视图中不起作用: myapp.controller('AddChoreController', ['$scope', function ($scope) { var choreList = this; $scope.choreList.chore = [{ name: 'Gun Running', frequency: 'As Needed', allowance: '$1000', id: 0 },
myapp.controller('AddChoreController', ['$scope', function ($scope) {
var choreList = this;
$scope.choreList.chore = [{ name: 'Gun Running', frequency: 'As Needed', allowance: '$1000', id: 0 },
{ name: 'Party Planning', frequency: 'Wednesdays', allowance: 'Free', id:1}];
当我将$scope从choreList.chore中取出时,我的视图将正确显示数据
我的观点是:
<tr ng-repeat="chore in chores.chore">
<td>{{chore.name}}</td>
<td>{{chore.frequency}}</td>
<td>{{chore.allowance}}</td>
</tr>
{{chore.name}
{{chore.frequency}
{{杂务津贴}
我希望数组稍后在屏幕中可用,并在添加新条目时自动加载它们
正如你所知道的,我对angularjs还是很陌生,所以任何建议(带教程链接)都非常感谢
在控制器中,尝试将列表命名为choreList并将其附加到范围:
$scope.choreList=[{name:'Gun Running',frequency:'As Needed',association:'1000',id:0},{name:'Party Planning',Free:'Wednesdays',association:'Free',id:1}];
在视图中,ngRepeat指令遍历数组(附加到作用域)
ng repeat=“杂务列表中的杂务”
你在这里混合技术。您正在使用控制器作为语法,这是$scope
的一种替代方法。将控制器用作时,控制器对象本身作为$scope
上的属性显示,允许您将项目作为控制器的属性而不是对象本身隐式添加到$scope
。在这种情况下,控制器根本不需要引用$scope
您的控制器代码可以简化为:
myapp.controller('AddChoreController', function () {
var choreList = this;
choreList.chore = [{ name: 'Gun Running', frequency: 'As Needed', allowance: '$1000', id: 0 },
{ name: 'Party Planning', frequency: 'Wednesdays', allowance: 'Free', id:1}];
...
此处的chore
数组是控制器的一个属性,可以通过chore.chore从视图中直接引用
基于此处理属性和范围的方法,重命名属性可能是有意义的。我可能会这样做:
myapp.controller('AddChoreController', function () {
var chores = this;
chores.choreList = [{ name: 'Gun Running', frequency: 'As Needed', allowance: '$1000', id: 0 },
{ name: 'Party Planning', frequency: 'Wednesdays', allowance: 'Free', id:1}];
...
那么,在你看来:
<div ng-controller='AddChoreController as chores'>
<tr ng-repeat="chore in chores.choreList">
....
</div>
....
这更清楚地表达了元素的多样性。您还没有显示整个html模板,但通过使用var choreList=This,您似乎正在使用控制器作为语法代码>。。。通常,控制器As语法旨在消除对$scope
的依赖,在您的情况下,var choreList
与$scope.choreList
不是同一个对象。看起来您可能在视图中使用了ng controller='AddChoreController'as chores'
,但这并不明显here@Claies-你是对的,我有以下内容:ng controller=“AddChoreController as chores”>-那么,根据您的评论,这是否意味着我不需要$scope,并且我尝试访问的数组已经可以访问它了?谢谢。我想这回答了我的问题。不过,我想我现在还有很多后续问题……老实说,我可能会建议您对房产的命名有所不同,以便更容易追踪其来源。我将用推荐的方法编辑我的答案。