Angularjs 当我将数据传递到隔离作用域时,不使用ng click调用控制器函数

Angularjs 当我将数据传递到隔离作用域时,不使用ng click调用控制器函数,angularjs,controller,directive,Angularjs,Controller,Directive,我试图通过使用一个连接所有国家、地区和城市的通用控制器来连接3个组件。每个组件都是一个带有标记数据的下拉菜单,当我选择第一个下拉菜单的when选项时,第二个必须显示与选项choosen相关的数据 问题是我想制作可重用的组件,因此包含信息的数组来自通用控制器。如果信息在component controller内部,并且我选择了一个选项,则单击调用其中定义的函数,并且一切正常,但是如果数组数据来自范围,则不调用函数。。。我认为这是一个参考问题,angular正在超级控制器中搜索函数,但没有 发生了什

我试图通过使用一个连接所有国家、地区和城市的通用控制器来连接3个组件。每个组件都是一个带有标记数据的下拉菜单,当我选择第一个下拉菜单的when选项时,第二个必须显示与选项choosen相关的数据

问题是我想制作可重用的组件,因此包含信息的数组来自通用控制器。如果信息在component controller内部,并且我选择了一个选项,则单击调用其中定义的函数,并且一切正常,但是如果数组数据来自范围,则不调用函数。。。我认为这是一个参考问题,angular正在超级控制器中搜索函数,但没有

发生了什么事?谢谢大家

RegionComponent JS

'use strict';
angular.module('regionModule', [])
.directive('regionDirective', function () {
    return {
        restrict: 'E',
        controller: 'regionController',
        scope:{
          data : '=',
          'region': '='
        },
        link: function ($scope) {
            $scope.regionHasBeenSelected = function (data) {
                $scope.region(data);
            };
        },
        templateUrl: 'scripts/directives/regionModule.html'
    };
})
.controller('regionController', function ($scope) {
    this.regionList = $scope.data;
    console.log('Region List is ' + $scope.data);

    this.selectRegion = function (id) {
        for (var x in this.regionList) {
            if (this.regionList[x].tag == id) {
                console.log(this.regionList[x].name + ' selected');
                $scope.regionHasBeenSelected(this.regionList[x].tag);
            }
        }
    };

});
RegionComponent HTML

<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Region
    <span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
  <li ng-repeat="region in data">
      <a ng-click='controller.selectRegion(region.tag)'>{{region.name}}</a>
  </li>
</ul>

区域

  • 很抱歉出现错误,这是我第一次创建一个^^

    来传递函数的引用,您需要使用“&”而不是“=”。='用于双向数据绑定,“&”用于传递外部函数引用。

    要传递函数引用,需要使用“&”而不是“=”。='用于双向数据绑定,“&”用于传递外部函数引用。

    将此“区域”:“=”更改为区域:“=”您创建的plunkr根本没有运行。我想你刚刚创建了一个新的普通plunkr,但是你应该创建一个angularjs。另外,保持简单,只发布与问题文件和代码相关的内容。否则就太让人困惑了。你说得对,Diana,很抱歉让人困惑:(@Juandi你能解释一下你试图创建的整个模块的功能吗,我在那些控制器和标记文件中看到的似乎有点奇怪。@DianaR我已经更新了Plunkr,现在可以工作了:)。我需要有3个选择器作为隔离组件,第一个选择器的控制器中有信息,只是为了测试,当我选择一个选项时,超级控制器(worldController)必须给第二个控制器(地区)指定所选国家的地区,第三个控制器也有相同的想法。问题是当我从worldController继承数据时,regionController内的函数永远不会使用ng click调用,但如果数据本机存储在regionController内,则ng click可以工作。。。我不知道我是否解释得很好…将此“区域”:“=”更改为区域:“=”您创建的plunkr根本没有运行。我想你刚刚创建了一个新的普通plunkr,但是你应该创建一个angularjs。另外,保持简单,只发布与问题文件和代码相关的内容。否则就太让人困惑了。你说得对,Diana,很抱歉让人困惑:(@Juandi你能解释一下你试图创建的整个模块的功能吗,我在那些控制器和标记文件中看到的似乎有点奇怪。@DianaR我已经更新了Plunkr,现在可以工作了:)。我需要有3个选择器作为隔离组件,第一个选择器的控制器中有信息,只是为了测试,当我选择一个选项时,超级控制器(worldController)必须给第二个控制器(地区)指定所选国家的地区,第三个控制器也有相同的想法。问题是当我从worldController继承数据时,regionController内的函数永远不会使用ng click调用,但如果数据本机存储在regionController内,则ng click可以工作。。。我不知道我是否解释得很好…你是对的,但是这里根本没有传递给指令的函数的引用。是的@Pratik你是对的,但是这里我将函数包装在链接中只是为了得到指令的数据,而不是在它里面调用:)你是对的,但是这里根本没有对传递给指令的函数的引用。是的@Pratik你是对的,但是这里我将函数包装在链接中只是为了得到指令的数据,而不是在它里面调用:)