使用NodeJS memoize的块过滤器可防止AngularJS中的视图刷新

时间:2016-12-08 23:49:07

标签: angularjs node.js view filter

我使用nodejs memoize来对Angularjs中的一个对象进行分块(以便更好地将它与bootstrap列一起使用)

app.filter('chunk', function() {
   return memoize(chunk);
});

并在视野中:

<div class="row" ng-repeat="row in groupProjects | chunk:4">
   <div class="col-xs-12 col-sm-6 col-md-3" ng-repeat="item in row">
      {{item.name}}
   </div>
</div>

但是如果我在控制器中获得了groupProjects的新数据,则不会更新w视图。如果我删除过滤器,它会更新,但不会更新。

导致问题的原因是什么?感谢

2 个答案:

答案 0 :(得分:0)

不确定public void leftTrue(){ left = true; } public void rightTrue(){ right = true; } public void registerSource(String linkId, DragNode linkNode) { linkedNodeID = linkNode.getId(); double nodeWidth1 = linkNode.getWidth()/2; if(DragNode.linkNodeOneX <= nodeWidth1){ leftTrue(); }else{ rightTrue(); } if(left || right){ connectList.add(new NodeList<Boolean, Boolean, String>(left, right, linkedNodeID)); left = false; right = false; } } public void registerTarget(String linkId, DragNode linkNode) { linkedNodeID = linkNode.getId(); double nodeWidth2 = linkNode.getWidth()/2; if( DragNode.linkNodeTwoX < nodeWidth2){ leftTrue(); }else{ rightTrue(); } if(left || right){ connectList.add(new NodeList<Boolean, Boolean, String>(left, right, linkedNodeID)); left = false; right = false; } } 的价值是什么,但假设它是一个函数,那么您的代码应如下所示:

chunk

答案 1 :(得分:0)

我不明白为什么NodeJS应该参与其中,但无论如何,你可以通过在你的应用中注入下划线(或lodash)来做到这一点。请注意,我们会记住此函数以防止Angular启动无限量的摘要。

app.factory "lodash", ["$window", ($window)->
  $window._
]

#filters
app.filter "chunk", ["lodash", (_)->
  _.memoize _.chunk
]