Angularjs 我如何观察指令中被排除的元素?

Angularjs 我如何观察指令中被排除的元素?,angularjs,Angularjs,我试图写一个分页指令,但要做到这一点,我需要知道有多少元素被转置,所以HTML看起来像这样 <pagelister> <div ng-repeat="name in searchResults">{{name}}</div> </pagelister> {{name}} (这是一个简单的例子——被转换的代码可能会任意复杂。) 指令必须监视。。。它可以重新计算页数 编辑抱歉,该代码未作为代码调用。我希望上面的代码将列表中的名字分成10页

我试图写一个分页指令,但要做到这一点,我需要知道有多少元素被转置,所以HTML看起来像这样

<pagelister>
    <div ng-repeat="name in searchResults">{{name}}</div>
</pagelister>

{{name}}
(这是一个简单的例子——被转换的代码可能会任意复杂。)

指令必须监视。。。它可以重新计算页数

编辑抱歉,该代码未作为代码调用。我希望上面的代码将列表中的名字分成10页,并添加一些漂亮的next/prev按钮


问题是,当调用指令的
link
函数时,div尚未展开。我通过推迟对DOM的修改来“修复”这个问题——但这只在第一次起作用。如果$scope.searchResults(或转包代码观察到的任何其他内容)发生更改,我需要重新调整DOM。我只想知道那是什么时候

如果您的指令没有创建自己的子作用域或隔离作用域,则该指令将有权访问searchResults数组。链接功能可以简单地观察长度:

link: function(scope, element, attrs) {
    scope.$watch('searchResults.length', function(newLength) { ... } );

如果您的指令没有创建自己的子作用域或隔离作用域,则该指令将有权访问searchResults数组。链接功能可以简单地观察长度:

link: function(scope, element, attrs) {
    scope.$watch('searchResults.length', function(newLength) { ... } );

使用指令范围绑定将nessasry信息传递给指令怎么样

种类:

<pagelister pages="searchResults"> ... transcluded template</pagelister>
...
scope: { pages: '=' },
link: function(scope, element, attrs) { 
  scope.$watch('pages', ...)
。。。转移模板
...
作用域:{pages:'='},
链接:函数(作用域、元素、属性){
范围.$watch('页面',…)

如何使用指令范围绑定将nessasry信息传递给指令

种类:

<pagelister pages="searchResults"> ... transcluded template</pagelister>
...
scope: { pages: '=' },
link: function(scope, element, attrs) { 
  scope.$watch('pages', ...)
…转包模板
...
作用域:{pages:'='},
链接:函数(作用域、元素、属性){
范围.$watch('页面',…)

我通过在指令上设置一个属性来告诉它要监视什么来实现这一点,因此指令中没有依赖项(除了attr)

:父控制器
$scope.searchResultsLength=searchResults.length(或您选择的任何内容| |或空对象)
:html
:内部指令控制器
返回{
替换:false,
是的,
范围:true,//重要
控制器:函数($scope$element){
$scope.$watch($element[0].getAttribute(“watch”),fn);
...

这远不是我的想法,但这意味着我可以将此指令放在任何地方,它将包装我的ng repeat并管理自动更新

我通过在指令上设置一个属性来告诉它要看什么来实现这一点-因此指令中没有依赖项(attr除外)

:父控制器
$scope.searchResultsLength=searchResults.length(或您选择的任何内容| |或空对象)
:html
:内部指令控制器
返回{
替换:false,
是的,
范围:true,//重要
控制器:函数($scope$element){
$scope.$watch($element[0].getAttribute(“watch”),fn);
...

这远不是一个好主意,但这意味着我可以在任何地方删除此指令,它将包装我的ng repeat并管理自动更新

这是一个非常模糊的问题。你能添加更多详细信息吗?代码示例?这是一个非常模糊的问题。你能添加更多详细信息吗?代码示例?