我在州内创建了一个控制器。我们通常使用这种符号表示我们的角度(1.5)组件和服务angular.extend(self, {})
。
我的问题是在初始化self.criteria
时,浏览器调用self.getAgencies()
并返回异常:
错误:self.getAgencies不是函数
(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。 谢谢你的帮助。
答案 0 :(得分:1)
因为何时达到此代码
A(8*(i-1)+j-1) <= B(i-1)(7+8*(j-1) downto 8*(j-1));
还没有调用angular.extend函数,并且没有理由为self包含getAgencies函数。
为什么不在事后初始化代理商?
criteria: {
agencies: self.getAgencies()
},
或者,您可以使用getter和post-pone调用函数:
angular.extend(self,{
criteria: { },
getAgencies: function () {
if ($location.search().agencies) {
return undefined;
} else {
return ['foo', 'blah'];
}
}
});
self.criteria.agencies = self.getAgencies();