Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用$scope时,视图不显示数组数据_Angularjs - Fatal编程技术网

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,并且我尝试访问的数组已经可以访问它了?谢谢。我想这回答了我的问题。不过,我想我现在还有很多后续问题……老实说,我可能会建议您对房产的命名有所不同,以便更容易追踪其来源。我将用推荐的方法编辑我的答案。