Javascript _当从Jasmine中的init方法调用时,foo不是一个函数
我正在测试一个控制器,它在实例化过程中调用了一个私有方法_init() 它执行一些服务调用(模拟),并在同一控制器内调用一些私有助手函数。在服务调用的一个成功块中,它尝试调用一个helper函数,然后我得到一个错误,即Javascript _当从Jasmine中的init方法调用时,foo不是一个函数,javascript,jasmine,Javascript,Jasmine,我正在测试一个控制器,它在实例化过程中调用了一个私有方法_init() 它执行一些服务调用(模拟),并在同一控制器内调用一些私有助手函数。在服务调用的一个成功块中,它尝试调用一个helper函数,然后我得到一个错误,即\u setPersonDropdown不是一个函数 我知道我不能直接调用私有函数,但控制器内调用即使是私有的,也应该是好的吗 控制器 var _init = function () { // Get PersonType list for dropdown
\u setPersonDropdown不是一个函数
我知道我不能直接调用私有函数,但控制器内调用即使是私有的,也应该是好的吗
控制器
var _init = function () {
// Get PersonType list for dropdown
personService.getPersonTypeList().success(function (response) {
$scope.personTypeList = response;
_setPersonDropdown(); //<-- this is the line that errors
})
.error( function (err) {
console.log(err);
});
};
_init();
1) 为什么说_setPersonDropdown不是一个函数,而它是在控制器中明确定义的
var _setPersonDropdown = function () {
// do some stuff
};
。。。根据要求,完整控制器供参考
angular.module('myApp')
.controller(definition and injections, function (...) {
var _init = function () {
// ...some random setup code
// Get PersonType list for dropdown
personService.getPersonTypeList().success(function (response) {
$scope.personTypeList = response;
_setPersonDropdown(); //<--- the error
})
.error( function (err) {
console.log(err);
});
};
_init();
var _setPersonDropdown = function () {
//do the thing
};
});
angular.module('myApp')
.控制器(定义和注入,功能(…){
var_init=函数(){
//…一些随机设置代码
//获取用于下拉列表的PersonType列表
personService.getPersonTypeList()成功(函数(响应){
$scope.personTypeList=响应;
_setPersonDropdown();//确保在定义\u setPersonDropdown()
之后调用\u init()
,或者(我的首选方法)只使用函数声明而不是函数的var定义,这样它将被提升
例如,这是错误的
var _init = function () {
// Get PersonType list for dropdown
personService.getPersonTypeList().success(function (response) {
$scope.personTypeList = response;
_setPersonDropdown(); //<-- this is the line that errors
})
.error( function (err) {
console.log(err);
});
};
_init();
var _setPersonDropdown = function() { /* ... */ };
var\u init=函数(){
//获取用于下拉列表的PersonType列表
personService.getPersonTypeList()成功(函数(响应){
$scope.personTypeList=响应;
_setPersonDropdown()//U setPersonDropdown
在控制器内部的定义位置,你能告诉我吗?单看并不能说明问题。谢谢@agmcleod确实是个问题……我不习惯在JS中排序函数声明谢谢,改为函数声明而不是变量,它工作得很好现在
var _init = function () {
// Get PersonType list for dropdown
personService.getPersonTypeList().success(function (response) {
$scope.personTypeList = response;
_setPersonDropdown(); //<-- this is the line that errors
})
.error( function (err) {
console.log(err);
});
};
_init();
var _setPersonDropdown = function() { /* ... */ };
var _init = function () {
// Get PersonType list for dropdown
personService.getPersonTypeList().success(function (response) {
$scope.personTypeList = response;
_setPersonDropdown(); //<-- this is the line that errors
})
.error( function (err) {
console.log(err);
});
};
_init();
function _setPersonDropdown() { /* ... */ }