2
我有一个指令,呈现一个长列表。渲染工作相当精细和快速,现在我想用参数调用控制器上的函数。 我怎样才能做到这一点?Angularjs指令呼叫控制器功能
这里是我的指令:
.directive("slheats", function() {
return {
restrict: "A",
scope: {
slheats: "=",
},
link: function (scope, element, attrs) {
scope.$watch("slheats", function (data) {
angular.forEach(data, function (heat, h) {
var body = "";
var first = true;
var ct = 1;
body += "<div class='row heat'>" + heat.Heat + "</div>";
angular.forEach(heat.Entries, function (entry, e) {
var line = "";
ct++;
line += "<div class='name'><button ng-click='showdetails()'>" + entry.Name + "</button></div>";
body += line;
});
$(element).append(body);
});
});
}
}
})
.controller('startlistcontroller',['$scope', 'apiservice', 'objectservice', function ($scope, apiservice, objectservice) {
$scope.startlists = [];
$scope.selected = null;
$scope.showdetails = function (x) {
alert(x);
};
我怎么能说我的控制器的showdetails功能?
谢谢曼纽尔!
我有一个模块与多个控制器和指令,所以我猜父范围应该是相同的或?对不起,我对角度很陌生。不幸的是,它不适用于你的解决方案。我会更新我的问题并添加控制器。 – 2015-03-03 13:40:34
我的意思是控制器是/有父范围的是,无论指令在html中被使用,它都在'ng-controller'指向该控制器的某个元素内。我用你的代码创建了这个[plnkr](http://plnkr.co/edit/0T46Q4oSZ2sLFpDUTowA?p=preview),我只是意识到我不确定你想要怎么处理这个指令。从外观上看,你似乎想以某种方式替换指令(或插入)在'angular.forEach'块中看到的html。你能用一个例子说明它在html中的用法吗? – jsonmurphy 2015-03-03 14:09:43
该指令现在只呈现一长串元素,之所以我为此使用指令,是因为ng-repeat非常慢,当我关闭绑定时速度慢了大约10倍。我现在想要做的是打开一个模态对话框,当你点击其中一个列表项来显示一些细节。当我调用foreach循环中的internalshowdetails方法时,例如它可以工作,但是当我将它插入到DOM中时它不起作用。 – 2015-03-03 14:13:28