指令中的指令 - 注意不起作用

时间:2016-04-18 08:49:49

标签: javascript angularjs

花了好几个小时,几乎尝试了一切,但它不起作用..

我有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未定义。 如果我有服务而不是&#39; master&#39;它有效的指令(我通过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>');
}

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

1 个答案:

答案 0 :(得分:0)

首先,你不要在指令中使用指令。

你在这里使用带双向绑定的指令。

由于您的范围与数据绑定,因此您应该testResult块中定义的scope{}。如果$ watch不工作,请尝试使用watchCollection,你应该没问题。