我已經查看了questions和documentation以擴展第三方Angular指令。我真正需要做的是擴展第三方的Angular控制器。擴展第三方Angular控制器
我在我的應用程序中使用了Smart Table庫,並對其執行list row selection with checkboxes的建議。然而,我的應用程序需要兩種類型的選擇:
- 複選框選擇,其中複選框可用於選擇單個或多個行(已經覆蓋在上面的鏈接csSelectAll指令)
- 行突出顯示,其中只有一行可以突出顯示
基於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
這裏是我的兩個問題:
- 我應該能夠以這種方式擴展第三方控制器?
- 如果不是,分叉項目並添加這個額外的功能我唯一的其他選擇?
關於第二個問題,這是一種做pull請求在你修改後的主分支上;-) –
當然,我肯定會對原始項目開放一個問題,詢問他們是否對我的更改感興趣,如果他們想要他們,請貢獻一下。畢竟,我不想爲這件事維持我自己的分叉:-)。但我不知道常常需要選擇*和*突出顯示,所以我不想立即創建拉取請求來放肆。 – Jay