Angularjs:使用ControllerAs时过滤ngRepeat

Sim*_*n H 1 angularjs

这篇文章最初提出了这个问题,并且包含了一个流行的答案,但我找不到更新代码以使用ControllerAs的方法.

var app = angular.module('myApp', []);

app.filter('slice', function() {
  return function(arr, start, end) {
    return arr.slice(start, end);
  };
});

app.controller('MainController', function() {
  vm = this;
  vm.items = [];
  vm.start = 0;
  vm.end = 20;
  for (var i = 0; i < 100; i++) vm.items.push(i);
  return vm;
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp">
  <div ng-controller='MainController as main'>
    Start: <input ng-model="main.start"> End: <input ng-model="main.end">
    <ul>
      <li ng-repeat="item in items | slice:main.start:main.end">{{item}}</li>
    </ul>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

dha*_*ngg 5

结帐这个plnkr

使用controllerAs语法时,需要使用控制器指针来访问其属性和方法.

<div ng-app="myApp">
  <div ng-controller='MainController as main'>
    Start: <input ng-model="main.start"> End: <input ng-model="main.end">
    <ul>
      <li ng-repeat="item in main.items | slice:main.start:main.end">{{item}}</li>
    </ul>
  </div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)