我有一个控制器,想要创建动态元素。当我创建它时,元素应该调用控制器函数,但函数不会被调用
app.controller('AbnTestController', ['$scope','$timeout',function($scope,$timeout) {
..........................
var tree1;
tree1 = [
{
label: 'test1',
id:'1',
type:'t',
}];
return $scope.addnew= function() {
.........
something
};
在我的指令中,我创建了动态元素;
app.directive('mytree', [
'$timeout', function($timeout) {
return {
restrict: 'E',
controller: function($scope) {
$scope.launch = function (mn) {........something.....}},
template: "<a ng-click='addnew()'>Click</a>",
replace: true,
scope: {
treeData: '=',
onSelect: '&',
initialSelection: '@',
treeControl: '='
}
...........
}}]);
我想从动态创建的元素中调用'addnew'函数。
答案 0 :(得分:0)
每个指令都有一个孤立的范围。
这意味着'addNew'功能在指令模板所在的范围内不可用。
要完成此操作,您可以将以下行添加到指令定义的“scope”属性中:
addNew: '&'
这会将scope属性绑定到原始范围(请参阅:https://docs.angularjs.org/guide/directive)
您的指令应如下所示:
app.directive('mytree', [
'$timeout', function($timeout) {
return {
restrict: 'E',
controller: function($scope) {
$scope.launch = function (mn) {........something.....}},
template: "<a ng-click='addnew()'>Click</a>",
replace: true,
scope: {
treeData: '=',
onSelect: '&',
initialSelection: '@',
treeControl: '=',
addNew: '&'
}
...........
}}]);