我查看了questions和documentation以扩展第三方Angular指令。我真正需要做的是扩展第三方角度控制器。
我正在使用我的应用程序中的Smart Table库及其实现list row selection with checkboxes的建议。但是,我的应用程序需要两种类型的选择:
我很容易根据select method为stTableController
编写高亮显示功能。但我希望能够自己做到这一点而不用自己的智能表。
我尝试了extending controllers的解决方案,但它似乎假设父控制器和子控制器存在于同一个模块中。当我尝试以下代码时:
angular.module('myApp')
.controller('smarterTableController', function(<required deps>) {
$controller('smartTableController', {$scope: $scope}));
//initialization stuff left out...
this.highlight = function(row) {
var rows = copyRefs(displayGetter($scope));
var index = rows.indexOf(row);
if (index !== -1) {
row.isHighlighted = row.isHighlighted !== true;
if (lastHighlighted) {
lastHighlighted.isHighlighted = false;
}
lastHighlighted = row.isHighlighted === true ? row : undefined;
}
};
});
//corresponding extension of the stTable directive to use the smarterTableController
此解决方案似乎不起作用。当我使用$controller
调用父控制器的函数时,我收到错误:
Argument 'smartTableController' is not a function, got undefined
以下是我的两个问题:
答案 0 :(得分:0)
我认为您应该使用require
参数创建自定义指令。
在这里查看文档:{{3}}
angular.module('myApp').directive("smarterTable", function(){
return {
require:"smartTable",
link: function(arg1, arg2, arg3, smartTableController){
// Put your logic here
}
}
});
在您看来,您必须添加:
<smart-table smarter-table=""></smart-table>