如何将过滤的param发送到指令

时间:2017-09-10 10:21:44

标签: javascript angularjs angularjs-directive angularjs-filter

我有像这样的照片轮播指令

<mz-photo-carousel items-per-slide=6
                   carousel-data="vm.carouselData">
</mz-photo-carousel>

在指令内部只是用于显示带有传递数据的旋转木马

<div uib-carousel active="active" no-wrap="noWrapSlides">
    <div uib-slide ng-repeat="slide in vm.carouselData">
     ....
    </div>
</div>

我想将过滤后的数据发送到mz-photo-carousel指令,如下所示:

<mz-photo-carousel items-per-slide=6
                   carousel-data="vm.carouselData | myFilter:param">
</mz-photo-carousel>

我不想在mz-photo-carousel指令中进行过滤,因为我想让它保持通用性,只处理它获得的数据。

1 个答案:

答案 0 :(得分:0)

问题在于,因为您设置了双向数据绑定到fn set_x(&mut self, v: i32) { self.field = v; let fref = &self.field; Foo::call_callbacks(&mut self.cbs.iter_mut(), |cb| cb.on_update(fref)); } fn call_callbacks<OP>(it: &mut Iterator<Item=&mut Box<OnUpdate>>, mut operation: OP) where OP: FnMut(&mut OnUpdate) { for cb in it { operation(&mut **cb); } } 属性。

参考来自SO答案:

SO Answer

  

将过滤器作业传递给指令时,angular会放置一个手表   在你的工作变量。所以当工作在指令观察中被分配时   被调用,这将再次触发过滤器,这将继续   直到最大消化周期达到角度。

     

要避免这种情况,您可以创建一个过滤方法并传递它   ng模型中的方法。这样您就可以避免复制创建和   最大摘要周期错误。

所以为了消除错误。使用下面的JS在指令中使用过滤器。还提供了演示。

JSFiddle Demo

<强> JS:

array