Javascript 未定义不是canjs中的函数

Javascript 未定义不是canjs中的函数,javascript,ejs,canjs,Javascript,Ejs,Canjs,我正在尝试使用带有ejs模板引擎的html文件中的canjs从json数组获取数据 但当我在浏览器上加载html文件时,它显示了一个错误:“Undefined不是一个函数” 这是我的todo.js var Todo=can.Model({ findall:“GET/todos”, findone:'GET/todos{id}', 创建:“发布/待办事项”, 更新:“PUT/todos/{id}”, 删除:“DELETE/todos/{id}” },{}) (功能(){ var TODOS=[{

我正在尝试使用带有ejs模板引擎的html文件中的canjs从json数组获取数据

但当我在浏览器上加载html文件时,它显示了一个错误:“Undefined不是一个函数”

这是我的todo.js

var Todo=can.Model({
findall:“GET/todos”,
findone:'GET/todos{id}',
创建:“发布/待办事项”,
更新:“PUT/todos/{id}”,
删除:“DELETE/todos/{id}”
},{})
(功能(){
var TODOS=[{id:1,名称:'Dipesh'},
{id:2,名字:'John'},
{id:3,名字:'约瑟夫'}];
fixture(“DELETE/todos/{id}”,函数(请求){
返回{};
});
can.fixture(“PUT/todos/{id)”,函数(请求){
$.extend(TODOS[(+request.data.id)-1],request.data);
返回{};
});
can.fixture(“POST/todos”,功能(请求){
var id=TODOS.length+1;
push($.extend({id:id},request.data));
返回{id:id,name:request.data};
});
can.fixture(“GET/todos”,函数(请求){
返回待办事项;
});
fixture(“GET/todos/{id}”,函数(请求){
返回TODOS[(+request.data.id)-1];
});
})();
findall({},函数(todos){
var frag=can.view('todosEJS',todos)
document.getElementById(“todos”)
.儿童(frag);

})
方法有
findAll
findOne
。请尝试以下方法:

var Todo = can.Model({
    findAll : 'GET /todos',
    findOne : 'GET /todos{id}',
    create  : 'POST /todos',
    update  : 'PUT /todos/{id}',
    remove  : 'DELETE /todos/{id}'
}, {});
两件事:

  • can.Model上的静态方法是findAll和findOne,而不是findAll和findOne
  • fixture URL在HTTP谓词和URL之间应该有一个空格。因此“POST/todos”应该是“POST/todos”
  • PUT的夹具缺少匹配的}。它应该是“PUT/todos/{id}”

下面是您处理jsbin的示例:

我遇到了相同的错误。包括can.ejs.js,错误将得到解决。

下载can.ejs.js,确保将所有出现的
findall
替换为
findall
。在HTTP方法和URL之间放置一个空格,如
POST/todos
。它提供了整个循环逻辑。like EJS不包含在核心CanJS中。这是一个你必须包含的插件。因此,要么包含can.ejs.js,要么使用canjs.com上的下载生成器来构建自定义包。Mustache是canjs中的默认模板引擎。我也收到了相同的错误!不确定是否缺少任何其他库。