指令中的指令-手表不工作

Directive in Directive - watch not working

本文关键字:指令 工作 手表      更新时间:2023-09-26

花了很多小时,尝试了几乎所有的东西,但都不起作用。。

我有一个角度指令,可以调用另一个角度指示。。我需要处理子指令中的事件。所以我的孩子指令看起来像:

           restrict: 'E',
           replace: true,
           scope: {
               testResult: "=",

在父指令中,我有:

<my-search-directive test-result="newTest"></my-search-directive>

为了处理testResult中的更改,在父指令中我有这样的监视:

  $scope.$watch('newTest', function (newVal, oldVal) {
      alert('test ' + newVal + ' ' + oldVal);
  }, true);

它在开头只触发一次,newVal和oldVal未定义。。如果我有服务而不是"master"指令,它就可以工作(我正在传递parentScope并将其用于监视)

一开始,newTest是返回复杂的对象,我认为这可能是问题所在,但事实并非如此,因为它现在也可以处理简单的字符串。

尝试使用watchcollection,但它也不起作用。。我需要这个场景,使用指令的指令,我可以弄清楚它是如何工作的?

EDIT 1 :
myApp.directive('parentDirective', [
    "$log", function ($log) {
        return {
            scope: {
                getQueriesUrl: "=",
                isFullyQualified: "=",
                isMainTabs: "=",
                model: "=",
                crudUrls: "=",
                callBackFunction: "&",
                callback: "&",
                newTestResult: "@"
            },
            restrict: 'A',
            replace: true,
            controller: function ($scope) 
{
myActions.push('<div><my-search-directive test-result="newTestResult"></my-search-directive></div>');
}

这是我的"父指令",所以我需要跟踪测试结果的变化。作为@Walfrat mantion,我添加了newTestResult变量,但仍然不起作用。。

首先,您没有在指令中使用指令。

您在这里使用的是具有双向绑定的指令。

由于您的作用域绑定到数据,因此您应该观察scope{}块中定义的testResult。如果$watch不起作用,请尝试watchCollection,您应该会没事的。