【问题标题】:Directive in Directive - watch not working指令中的指令 - 观察不工作
【发布时间】:2016-04-18 08:49:49
【问题描述】:

花了很多时间,几乎所有方法都试过了,但还是不行..

我有 Angular 指令女巫调用另一个 Angular 指令.. 我需要处理子指令中的事件。 所以我的孩子指令看起来像:

           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 未定义.. 如果我有服务而不是“主”指令,它可以工作(我正在传递 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 变量,但仍然不起作用..

【问题讨论】:

  • 我有解决方法..当然我可以使用 $rootScope 来跟踪更改..但这不是解决方案..
  • 您是否找到了不使用$rootScope 的解决方案?

标签: javascript angularjs


【解决方案1】:

首先你没有在指令中使用指令。

您在这里使用的是带有 2 路绑定的指令。

由于您的作用域已绑定到数据,您应该按照scope{} 块中的定义观看testResult。如果 $watch 不工作,试试 watchCollection 就可以了。

【讨论】:

  • 可能你不理解我的好..请看一下我的问题中的编辑 1 部分,我认为现在更清楚了.. 感谢您的支持。
  • 我明白了。首先将newTestResult:@ 更改为=,因为您在搜索指令中有它。如果这不起作用,您可以在父控制器中添加手表并生成事件。事件由您的搜索指令捕获。另一种方法是在您的父指令中公开一个 API 并在您的搜索指令中使用它。虽然这并不容易
  • 谢谢,现在我m using $rootScope .. I know that is bad practice , but i dont 现在有时间了
猜你喜欢
  • 1970-01-01
  • 2013-09-15
  • 2015-10-07
  • 2019-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多