【问题标题】:Angular run directive of paginated elements on page change页面更改时分页元素的角度运行指令
【发布时间】:2017-02-18 07:06:46
【问题描述】:

这听起来很复杂,但是,我希望这里有人比我更有经验,并且可以毫不费力地整理出接下来的内容。

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

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

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

我这里有这个ng-repeat:

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

它的目的是多次重复一个指令 &lt;puppy-block&gt;&lt;/puppy-block&gt; 指令模板是这样的:

<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 指令的数据,但是当发生更改时,我还需要在每个puppy-block 指令内触发preview-pup 指令的链接功能。分页指令和 ng-repeat 指令都有一个共同的控制器,它们从中提取数据(修改数据)。

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

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope


    【解决方案1】:

    好的,找到解决办法了:

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

    【讨论】:

      【解决方案2】:

      我也有同样的问题。从 ng-repeat 中删除“track by $index”为我修复了它。不幸的是,我还不知道为什么。

      【讨论】:

        猜你喜欢
        • 2016-03-24
        • 2015-03-13
        • 2018-06-18
        • 2015-09-06
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 2023-04-09
        • 1970-01-01
        相关资源
        最近更新 更多