TypeError: undefined不是函数,Durandal SPA
"TypeError: undefined is not a function, Durandal SPA
我试图创建简单的Durandal SPA,但是我有下面的错误,几个小时后,找不到问题是什么,我唯一的虽然它可能是在扬声器。js顶部的数据服务定义,但不确定我的假设是否正确。
"TypeError: undefined is not a function
at refresh (http://localhost:38945/App/speakers.js:21:16)
at Object.activate (http://localhost:38945/App/speakers.js:17:20)
at tryActivate (http://localhost:38945/Scripts/durandal/composition.js:112:44)
at Object.composition.bindAndShow (http://localhost:38945/Scripts/durandal/composition.js:491:13)
at Object.<anonymous> (http://localhost:38945/Scripts/durandal/composition.js:602:29)
at Object.<anonymous> (http://localhost:38945/scripts/vendor?v=CoGrntPfi-B6C9wW1BBGgsUzERM99npj7WHKHsHaK8U1:1:37083)
at l (http://localhost:38945/scripts/vendor?v=CoGrntPfi-B6C9wW1BBGgsUzERM99npj7WHKHsHaK8U1:1:35715)
at Object.s.fireWith [as resolveWith] (http://localhost:38945/scripts/vendor?v=CoGrntPfi-B6C9wW1BBGgsUzERM99npj7WHKHsHaK8U1:1:36527)
at Object.t.(anonymous function) [as resolve] (http://localhost:38945/scripts/vendor?v=CoGrntPfi-B6C9wW1BBGgsUzERM99npj7WHKHsHaK8U1:1:37507)
at Object.<anonymous> (http://localhost:38945/Scripts/durandal/viewEngine.js:167:25)"
dataservice.js
define(['logger'], ['durandal/system'], function (logger, system) {
var getSpeakerPartials = function (speakerObservable) {
// reset the obersvable
speakerObservable([]);
//set ajax call
var option = {
url: '/api/speakers',
type: 'GET',
datatype: 'json'
};
//make call
return $.ajax(options)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
var speakers = [];
data.sort(sortSpeakers);
data.forEach(function (item){
var s = new model.SpeakerPartial(item);
speaker.push(s);
});
speakerObservable(speakers);
log('Retrieved speakes from dremote data source', speakers, true);
}
function queryFailed(jqXHR, textStatus) {
var msg = 'Error getting data. ' + textStatus;
logger.log(msg,
jqXHR,
system.getModuleId(dataservice),
true);
}
function sortSpeakers(s1, s2) {
return (s1.firstName + s1.lastName > s2.firstName + s2.lastName) ? 1 : -1;
}
};
var dataservice = {
getSpeakerPartials: getSpeakerPartials
};
return dataservice;
function log(msg, data, showToast) {
logger.log(msg, data, system.getModuleId(dataservice), showToast);
}
});
speakers.js
define(['dataservice'], function (ds) {
debugger;
var speakers = ko.observableArray();
var initialized = false;
var vm = {
activate: activate,
speakers: speakers,
title: 'Speakers',
refresh: refresh
};
return vm;
function activate() {
if (initialized) { return; }
initialized = true;
return refresh();
}
function refresh(){
ds.getSpeakersPartials(speakers);
}
}
);
和我的vs studio结构,如果有帮助:http://screencast.com/t/uvqYqNrIz
你能不能试试
define(['logger', 'durandal/system'], function (logger, system) {
代替
define(['logger'], ['durandal/system'], function (logger, system) {
如果您将正确地看到函数名称是getSpeakerPartials
,并且您将其称为ds.getSpeakersPartials()
。我想这就是问题所在。
如果您正确地看到错误,它在speakers.js
的21
行上显示undefined is not a function
。第21行是ds.getSpeakersPartials()
相关文章:
- 这是使用html快照和谷歌获取的预期结果吗?SEO/SPA
- 在我的SPA应用程序中集成Facebook共享的问题
- 错误:$injector:modulerr模块错误(我的第一个SPA应用程序)
- 在非SPA(单页应用程序)中使用Require.js和Backbone
- 用户使用浏览器时SPA中的问题's的后退或刷新功能
- SPA异步调用在IE 11中不起作用
- 在 dom 完成加载 durandal 后调用函数
- 错误:无法在“XMLHttpRequest”上执行“发送”:无法加载“文件”:AngularJS SPA
- Durandal:如何调用CanActivate()方法
- Angular SPA中不需要的页面刷新
- MVC路由和SPA路由之间的差异
- 最轻的js/css,用于向用户提供SPA正在加载/初始化的视觉反馈
- durandal敲除复选框多维数组
- 在AngularJs的SPA中,我如何删除“;.html”;来自我的URL
- Durandal SPA 打字稿问题
- 如何开始使用带有Durandal SPA应用程序的Phonegap Build
- 查看未使用Durandal/Knockout更新SPA中的绑定
- TypeError: undefined不是函数,Durandal SPA
- 有可能有一个SPA包含多个其他SPA与Durandal
- 使用Durandal动态创建SPA