Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 如果我们有很多div,每个div在控制器的范围内都有一个卷轴,那么哪个卷轴会生效_Angularjs_Scroll_Location_Anchor_Element - Fatal编程技术网

Angularjs 如果我们有很多div,每个div在控制器的范围内都有一个卷轴,那么哪个卷轴会生效

Angularjs 如果我们有很多div,每个div在控制器的范围内都有一个卷轴,那么哪个卷轴会生效,angularjs,scroll,location,anchor,element,Angularjs,Scroll,Location,Anchor,Element,在“按ID滚动到一个元素”中,如果我们有多个div,将影响哪个滚动,每个div在控制器的范围内都有一个滚动。在下面的示例中,如何将滚动设置为我刚才添加的最新项目?。任何帮助,谢谢 这是我的剧本: app.controller('MainCtrl', function($scope, $location, $anchorScroll) { var i = 1; $scope.people = [{"name": John, "items": [{ id

在“按ID滚动到一个元素”中,如果我们有多个div,将影响哪个滚动,每个div在控制器的范围内都有一个滚动。在下面的示例中,如何将滚动设置为我刚才添加的最新项目?。任何帮助,谢谢

这是我的剧本:

app.controller('MainCtrl', function($scope, $location, $anchorScroll) {
  var i = 1;
  $scope.people = [{"name": John,
                   "items": [{ id: 1, name: 'Item 1' }]},
                   {"name": Tom,
                   "items": [{ id: 1, name: 'Item 1' }]},
                  ]
  $scope.addItem = function (index){
    i++;
    $scope.people[index].items.push({ id: i, name: 'Item ' + i});
    $location.hash('item' + i);
    $anchorScroll();
  };
这是我的html:

<div ng-controller = "MainCtrl"  style="height:1000px; overflow:scroll">
  <div ng-repeat="person in people" style="height:700px; overflow:scroll">{{person.name}}
    <button ng-click="addItem($index)">Add Item </button>
    <div style="height:500px; overflow:scroll"> //How to set this scroll to the latest item?
      <ul>
      <li ng-repeat="item in person.items" id="item{{item.id}}">{{item.name}}</li>
      </ul>        
    </div>
  </div>
</div>

{{person.name}
添加项
//如何将此滚动设置为最新项目?
  • {{item.name}

经过一些简短的修复后,您提供的代码对我有效。 对于初学者来说,人名数组中的姓名应该用引号括起来,如下所示(第一个版本-可以工作,但在第二个版本中仍然存在HTML错误):

另一个问题是,您有非唯一的id属性,它们在HTML中应该是唯一的,如您在上所示:

  • -
您应该更改初始化人员数组项的方式(第二个版本):

我建议您做的是将与单人相关的html提取到一个单独的指令中,并将与单人相关的逻辑提取到其单独的服务中,这将极大地清理代码

如果需要,我可以详细说明


希望这有帮助。

谢谢您的修复,但您误解了我的意思。这是我问题的另一个答案[链接]
 $scope.people = [{"name": "John", //added quotes around John
               "items": [{ id: 1, name: 'Item 1' }]},
               {"name": "Tom", //added quotes around Tom
               "items": [{ id: 1, name: 'Item 1' }]},
              ]
  var i = 0;


  $scope.people = [{"name": "John",
                   "items": []},
                   {"name": "Tom",
                   "items": []},
                  ]
  $scope.addItem = function (index){
    i++;
    $scope.people[index].items.push({ id: i, name: 'Item ' + i});
    $location.hash('item' + i);
    $anchorScroll();
  };

  $scope.addItem(0); //add the item to John -> the id is 1
  $scope.addItem(1); //add the item to Tom -> the id is 2