javascript - undefined 不是 canjs 中的函数

标签 javascript ejs canjs

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

但是当我在浏览器上加载 html 文件时,它显示错误“Undefined is not a function”。

这是我的 todo.js

var Todo = can.Model({
	findall : 'GET/todos',
	findone : 'GET/todos{id}',
	create  : 'POST/todos',
	update  : 'PUT/todos/{id}',
	remove  : 'DELETE/todos/{id}'

},{})

(function(){
	var TODOS =  [{id: 1,name : 'Dipesh'},
	        	  {id: 2,name : 'John'},
	        	  {id: 3,name : 'Joseph'}];

	    can.fixture("DELETE/todos/{id}",function(request){
	    	return {};
	    });
	    can.fixture("PUT/todos/{id)", function(request){
	    	$.extend(TODOS[(+request.data.id)-1], request.data);
	    	return {};
	    });
	    can.fixture("POST/todos", function(request){
	    	var id = TODOS.length + 1;
	    	TODOS.push($.extend({id:id},request.data));
	    	return {id:id, name: request.data};
	    });
		can.fixture("GET/todos", function(request){
			return TODOS;
		});
		can.fixture("GET/todos/{id}", function(request){
			return TODOS[(+request.data.id)-1];
		});
})();

Todo.findall({}, function(todos){
	var frag = can.view('todosEJS', todos)
	document.getElementById("todos")
	   .appendChild(frag);
})

这是我的 html 文件:

<html>
<head>
	<title>Canjs </title>
</head>
<body>
<ul id = 'todos'></ul>
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script src='../can.custom.js' type="text/javascript"></script>
<script src='todos.js' type="text/javascript"></script>

<script id = 'todosEJS' type = 'text/ejs'>
	<% for(var i = 0;i<this.length;i++){%>
		<li><%=this[i].name%></li>
	<% } %>

</script>
</body>
</html>

它在 Todo.findall({}, function(todos){ 行显示错误,因为“undefined is not a function”。 有人有解决方案吗?

最佳答案

一些事情:

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

这是您在 jsbin 上工作的示例:http://jsbin.com/waqihidajo/1/edit

关于javascript - undefined 不是 canjs 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804334/

相关文章:

异步加载的 Node.js 和 Express 3 : Set app. 局部变量

Javascript 框架 canJs control.route

Javascript 排序项目排除某些特定项目

AngularJS 中的 JavaScript 变量声明

javascript - Wordpress 下拉菜单

node.js - 无法让 ejs 页面呈现

html - 为什么我不能将我的 css 链接到我的 ejs 文件?

javascript - Css 模态框 z 索引不起作用

javascript - 离开页面时从 Razor View 中的 session 中删除项目

javascript - CanJS - View .ejs 如何填充到 index.html