Angularjs 角度:什么';这个指令怎么了?

Angularjs 角度:什么';这个指令怎么了?,angularjs,filter,directive,Angularjs,Filter,Directive,基本上,我想在指令中使用filteredList from repeat,如下所示: <tr ng-repeat="emp in (filteredList = (data.employees | filter:searchString))"> ... <ms-pager items="filteredList" skip-items="skipItems"></ms-pager> ... 我创建了一个plunker来说明这个问题。当您输入

基本上,我想在指令中使用filteredList from repeat,如下所示:

  <tr ng-repeat="emp in (filteredList = (data.employees | filter:searchString))">
  ...

  <ms-pager items="filteredList" skip-items="skipItems"></ms-pager>

...
我创建了一个plunker来说明这个问题。当您输入搜索字符串(例如J)时,过滤器工作正常,但我得到以下错误:

错误:[$rootScope:infdig]已达到10$digest()次迭代。流产

正如我所想的,这是因为我将filteredList传递给了我的ms寻呼机指令。如果我不使用这个指令,一切正常。那么,这是指令中的错误,还是指令中的限制,还是我的代码错误

请注意,该指令是有效的,但浏览器控制台中出现了如此多的错误,这让我很烦恼。

请尝试删除周围的()


我还注意到您没有将任何数据传递到“skipItems”

我有一种预感,您的
digest()
问题是由于
ng repeat
中的
filteredList
分配造成的。尽管如此,我还是找到了另一种解决方案,您可以在控制器中查看
searchString
,然后使用
$filter
在控制器内部进行过滤,而不是使用
ng repeat
表达式。给你-非常感谢你建议的解决方法。事实上,我已经找到了一个解决方法,但这个问题确实困扰着我,因为我怀疑我在其他地方也有类似的问题(请参阅我的其他问题),我想看看是否有合适的修复方法。删除括号将改变指令的功能:它不再显示filteredList的长度。这是指令的要点。我错过了,让我再看一看。这个长度问题与您的手表没有触发指令中的item.length对象有关。这里有两个问题。一个是10$digest the(),第二个是手表没有触发item.length.Hi,tmc,非常感谢您的努力,但它并没有解决我的问题。我真的需要将filteredList传递给指令,因为我还需要做其他事情。这个问题中显示的指令只是说明问题的精简版本。另外,去掉括号我看不出有什么区别。你是想这么做吗?此问题修复了指令中过滤列表(items.length)未更新的问题。
data.employees | filter:searchString

(filteredList = data.employees | filter:searchString)