我有一个控制器,带有获取参数的方法, 我想要一个指令来调用该方法并传递参数。
当用户单击指令内的标记时,如何向控制器添加标记。
一些代码:
app.controller('MainCtrl', function($scope) {
$scope.chosenTags = ['clickToRemoveMe', 'if you click on tags below they should appear here'];
$scope.jokes = [{
id: 0,
content: 'bla bla bla bla',
tags: ['fat', 'blondes']
},{
id: 1,
content: 'another another another ',
tags: ['thin', 'dark']
}];
$scope.addTag = function(tag) {
$scope.chosenTags.push(tag);
},
$scope.removeTag = function(tag) {
removeA($scope.chosenTags, tag);
}
});
app.directive("joke", [function () {
return {
restrict: 'E',
templateUrl: 'joke.html',
scope: {
joke: '='
}
};
}]);
答案 0 :(得分:1)
您正在使用隔离范围,因此ng-click="addMe(tag)"
不会做任何事情,因为范围内的addMe
函数不存在。
您有几个选项,但我刚添加了函数引用并将其放在范围内:
<强>指令:强>
scope: {
joke: '=',
addMe: '='
}
<强> HTML:强>
<joke ng-repeat="joke in jokes" joke="joke" add-me="addTag"></joke>
此外,您应该在插入chosenTags
数组之前添加一个检查,以避免出现这些控制台错误:
$scope.addTag = function(tag) {
if ($scope.chosenTags.indexOf(tag) === -1) {
$scope.chosenTags.push(tag);
}
}