0
我在一個狀態內創建了一個控制器。對於我們的角(1.5)組件和服務,我們通常使用這種符號和angular.extend(self, {})
。控制器內部的角度ui路由器功能不是一個功能
我在這裏的問題是,當self.criteria
正在初始化,瀏覽器調用self.getAgencies()
,並返回一個例外:
Error: self.getAgencies is not a function
(function (app) {
'use strict';
app.config(function ($stateProvider) {
$stateProvider.state('app.invoice', {
url: '/invoice'
abstract: true,
template: '<ui-view></ui-view>'
})
.state('app.invoice.list', {
url: '/list?allMyParam',
template: '<invoices criteria="$ctrl.criteria"></invoices>',
controllerAs: '$ctrl',
controller: function ($location) {
var self = this;
angular.extend(self,{
criteria: {
agencies: self.getAgencies()
},
getAgencies: function() {
if ($location.search().agencies) {
return undefined;
} else {
return ['foo', 'blah'];
}
}
});
}
});
});
})(angular.module('module', []));
我把getAgencies()函數在標準原型初始化,但它並沒有改變任何東西。
我離開了它通過移動getAgencies()
外angular.extend(self, {})
這樣的:
var self = this;
var getAgencies = function() {
if ($location.search().agencies) {
return undefined;
} else {
return ['foo', 'blah'];
}
}
angular.extend(self, {
criteria: {
agencies: getAgencies()
}
});
我的代碼工作,所以它是確定的我,但我想知道爲什麼我self.getAgencies()
不工作時,此呼叫在控制器組件內運行良好,如果可以的話,使其更好。
我使用angular-ui-router 0.2.18,角度爲1.5.0。 謝謝你的幫助。
這種解釋是偉大的,非常感謝你。 :) – Berhthun