页面更改时分页元素的角度运行指令

时间:2014-12-12 17:07:04

标签: angularjs angularjs-directive angularjs-scope

这听起来很复杂但是,我希望这里的人比我更有经验,并且可以毫不费力地对下面的内容进行分类。

为了保持这一点,这一切都与分页部分相关:如下所示:有一个控制器通过ajax请求从测试页面中提取一些初始数据对象。这些数据对象属于每个“小狗块” - 它们用正确的数据填充小狗块指令的“小狗块”模板。

使用ng-repeat显示块(重复拉动数据对象的数量) - 这表示页面。

分页是独立的,只需通过不同的ajax请求修改控制器数据。

我在这里有ng-repeat

<div class="puppiesContainer" ng-repeat="p in puppies track by $index">
    <puppy-block></puppy-block>
</div>

它的目的是多次重复一个指令 <puppy-block></puppy-block>指令模板是这样的:

<div class="puppyA" preview-pup>
    <div class="clearfix puppyCover" dataPreview="{{p.dataPreview}}">
        <a ng-href="{{p.link}}"><img ng-src="{{previewData[currentPosition]}}" /></a>
    </div>
</div>

如您所见,每个元素上都有另一个名为preview-pup的指令。 该指令的代码是:

obApp.directive('previewPup', ['$timeout',function($timeout){
return {
    restrict: 'A',
    link: function(scope, el, attr){
        //some code that needs to run often
    }
}
}]);

我的分页指令在不同页面之间移动时会更改puppy-block指令的数据,但是我还需要在每个preview-pup指令内触发puppy-block指令的链接功能,当变化发生时。分页指令和ng-repeat指令都有一个公共控制器,用于绘制数据(修改数据)。

我的问题是我不知道如何在ng-click上手动触发指令的链接功能。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

好的,找到了解决方案:

$routeScope注入您的控制器和您想要触发更改的指令。 使用它来通知子指令父控制器中的更改。有关更多详细信息 - 如果有人偶然发现这个问题寻找类似的东西 - Angular.js trigger another directive

答案 1 :(得分:0)

我有同样的问题。通过$ index&#34;删除&#34;轨道来自ng-repeat为我修好了它。不幸的是,我不知道为什么。