我確定這個問題之前已經被問過了,但我很難找出正確的東西來搜索。模塊中的AngularJS加載範圍函數
我有許多樣板代碼的應用程序,如paginators,切換,過濾器等。我不想把這些東西變成指令,因爲這看起來像是過度殺傷。目前我正在使用ng-include來幹掉我的HTML,但在我的指令中,我仍然有很多樣板範圍的函數。
我想知道的是如果/如何從模塊加載這些函數,並讓它們自動綁定到範圍。
現在我有這樣的:
.directive('somethingAwesome', ['$http', '$timeout', function($http, $timeout) {
return {
replace: true,
templateUrl: '/assets/awesome_sauce.html',
transclude: false,
scope: true,
controller: ['$scope', '$http', '$timeout', function($scope, $http, $timeout) {
// Public Functions List
$scope.next = next;
$scope.prev = prev;
$scope.filter = filter;
// ...
// Public Functions Definitions
function next() {
// Do something
}
function prev() {
// Do something
}
function filter() {
// Do something
}
// ...
}]
}
}])
我想要做的事更是這樣的:
.directive('somethingAwesome', ['$http', '$timeout', function($http, $timeout) {
return {
replace: true,
templateUrl: '/assets/awesome_sauce.html',
transclude: false,
scope: true,
controller: ['$scope', '$http', '$timeout', function($scope, $http, $timeout) {
include boilerplate;
}]
}
}])
(function boilerplate() {
// Public Functions List
$scope.next = next;
$scope.prev = prev;
$scope.filter = filter;
// ...
// Public Functions Definitions
function next() {
// Do something
}
function prev() {
// Do something
}
function filter() {
// Do something
}
// ...
return something;
})()
這裏的關鍵是,僅僅包括boilerplate
結合所有的功能範圍的任何指令或控制器包括它。即使我仍然需要手動將每個函數從boilerplate
綁定到作用域,但這樣的作用仍然很有用,因爲它會干擾很多代碼。
這是可能的,如果是這樣,如何?
也許這有助於:http://stackoverflow.com/questions/18378520/angularjs-pass-function-to-directive –