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