我正在尝试构建一个自定义角度表指令,并遇到了一个奇怪的问题。我有一个父指令parentDir
,里面有多个子元素childDir
。单击childDir
时,它会调用父项的sortByKey
函数,该函数会更改控制器的sorting
变量,稍后将根据单击的列对数据进行排序。< / p>
问题是,在childDirs
中,我正在观察父项的sorting
变量,但是当变量值发生变化时,回调函数不会触发。相反,它似乎将回调排队,直到在父指令控制器的$ scope或其父$ scope中发生某些事情 - 例如,更改带有ng-model
的输入会触发所有排队的$ watch回调。
到目前为止,我试图在$scope.$apply()
函数(不起作用)和watch回调中调用sortByKey
(由于它没有被调用,显然不起作用)。我有点难以回避为什么回调没有触发,因为这是我第一次遇到这种行为。
Here's a link to the plunker demonstrating the behaviour。打开控制台,然后单击“Hello”,“Hello 2”和“Hello 3”文本。您可以在控制台中看到正确调用了sortByKey
函数,但没有$watch
回调的日志记录。然后更改输入的值,您可以看到回调函数console.logs
。
总结:
$watch()
回调函数未在子指令中触发$scope.$apply
来电无效show
文字在单击文本后显示在单击的文本之后,并从所有其他文本中消失