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