Javascript 创建自定义ng重复以避免angularjs中的$watch

Javascript 创建自定义ng重复以避免angularjs中的$watch,javascript,angularjs,angularjs-directive,angularjs-watch,Javascript,Angularjs,Angularjs Directive,Angularjs Watch,我正在使用ng repeat的自定义指令以避免$watch。我已尝试尽一切可能修改该指令以跳过$watchCollection()。但如果没有这个,我就无法访问指令中的数据 是否可以创建从dom获取模型值并更新页面dom的指令,而无需创建$watch? 下面的myRepeatDirective中包含了我想要在不使用$watch的情况下重新创建此指令的所有内容 我已经厌倦了将一次绑定(:)与ng repeat一起使用,但它使用的是分页。网格加载后不会更新 提前谢谢 .directive('myRe

我正在使用ng repeat的自定义指令以避免
$watch
。我已尝试尽一切可能修改该指令以跳过
$watchCollection()
。但如果没有这个,我就无法访问指令中的数据

是否可以创建从dom获取模型值并更新页面dom的指令,而无需创建
$watch

下面的
myRepeatDirective
中包含了我想要在不使用
$watch
的情况下重新创建此指令的所有内容

我已经厌倦了将一次绑定(
)与
ng repeat
一起使用,但它使用的是分页。网格加载后不会更新

提前谢谢

.directive('myRepeat', [ '$animate', function($animate) {

  var updateScope = function(scope, index, valueIdentifier, value, key, arrayLength) {
    scope[valueIdentifier] = value;
    scope.$index = index;
    scope.$first = (index === 0);
    scope.$last = (index === (arrayLength - 1));
    scope.$middle = !(scope.$first || scope.$last);
    scope.$odd = !(scope.$even = (index&1) === 0);
  };

  return {
    restrict: 'A',
    transclude: 'element',
    compile: function($element, $attrs) {

      var expression = $attrs.myRepeat;

      var match = expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)?\s*$/);

      var valueIdentifier = match[1];
      var collection = match[2];

      return function($scope, $element, $attr, ctrl, $transclude) {

        $scope.$watchCollection(collection, function(collection) {
          var index, length,
            previousNode = $element[0],
            collectionLength,
            key, value;

            collectionLength = collection.length;

            for (index = 0; index < collectionLength; index++) {
              key = index;
              value = collection[key];

              $transclude(function(clone, scope) {
                $animate.enter(clone, null, angular.element(previousNode));
                previousNode = clone;
                updateScope(scope, index, valueIdentifier, value, key, collectionLength);
              });

            }
        });

      }
    }
  }

}]);
.directive('myRepeat',['$animate',function($animate){
var updateScope=函数(范围、索引、值标识符、值、键、数组长度){
范围[valueIdentifier]=值;
范围.$index=索引;
范围.$first=(索引==0);
作用域。$last=(索引==(数组长度-1));
scope.$middle=!(scope.$first | | scope.$last);
作用域。$奇数=!(作用域。$偶数=(索引和1)==0);
};
返回{
限制:“A”,
转移:'元素',
编译:函数($element,$attrs){
var表达式=$attrs.myRepeat;
var match=expression.match(/^\s*([\s\s]+?)\s+in\s+([\s\s]+?)?\s*$/);
var valueIdentifier=匹配[1];
var集合=匹配[2];
返回函数($scope、$element、$attr、ctrl、$transclude){
$scope.$watchCollection(集合,函数(集合){
var指数,长度,
previousNode=$element[0],
集合长度,
关键、价值;
collectionLength=collection.length;
对于(索引=0;索引
angular基于观察者-没有观察者?没有角度您是否考虑过使用而不是重新创建整个指令?(::不使用分页)