javascript – BackboneJs:未捕获TypeError:undefined不是函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – BackboneJs:未捕获TypeError:undefined不是函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5088字,纯文字阅读大概需要8分钟。
内容图文
![javascript – BackboneJs:未捕获TypeError:undefined不是函数](/upload/InfoBanner/zyjiaocheng/720/a3aea97935574b58abb775b32c4802b8.jpg)
我遇到的问题是Stack中有很多其他帖子.但是没有人能解决这个问题所以我正在解决这个问题.
快速参考:
Uncaught TypeError: undefined is not a function rails3/backbone/js
我正在用backBoneJs编写我的第一个应用程序.这是我遵循的例子:
http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/
当我执行代码时:
1 - Uncaught TypeError: Cannot call method 'extend' of undefined (Controller 1oline)
2 - Uncaught TypeError: undefined is not a function (app 6o line)
App.initapp.js:6
(anonymous function)/backbone/#:32
f.extend._Deferred.e.resolveWithjquery-1.6.4.min.js:2
e.extend.readyjquery-1.6.4.min.js:2
c.addEventListener.C
检查我的代码:
的index.html
<html>
<head>
<title></title>
<link href="css/style.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1><a href="#">Editor de Documentos</a></h1>
<h2>Backbone + PHP by Lqdi</h2>
<div id="notice"></div>
<div id="app"></div>
<script type="text/javascript" src="js/_libs/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/_libs/json2.js"></script>
<script type="text/javascript" src="js/_libs/underscore.js"></script>
<script type="text/javascript" src="js/_libs/backbone.js"></script>
<script type="text/javascript" src="js/_libs/jquery.dotimeout.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/controllers/documents.js"></script>
<script type="text/javascript" src="js/models/document.js"></script>
<script type="text/javascript" src="js/collections/documents.js"></script>
<script type="text/javascript" src="js/views/edit.js"></script>
<script type="text/javascript" src="js/views/index.js"></script>
<script type="text/javascript" src="js/views/notice.js"></script>
<script type="text/javascript">
$(function() {
App.init();
});
</script>
</body>
</html>
类别:
App.Collections.Documents = Backbone.Collection.extend({
model: Document,
url: '/documents'
});
控制器:
App.Controllers.Documents = Backbone.Controller.extend({
routes: {
"documents/:id": "edit",
"": "index",
"new": "newDoc"
},
edit: function(id) {
var doc = new Document({ id: id });
doc.fetch({
success: function(model, resp) {
new App.Views.Edit({ model: doc });
},
error: function() {
new Error({ message: 'Could not find that document.' });
window.location.hash = '#';
}
});
},
index: function() {
var documents = new App.Collections.Documents();
documents.fetch({
success: function() {
new App.Views.Index({ collection: documents });
},
error: function() {
new Error({ message: "Error loading documents." });
}
});
},
newDoc: function() {
new App.Views.Edit({ model: new Document() });
}
});
楷模:
var Document = Backbone.Model.extend({
url : function() {
var base = 'documents';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
}
});
浏览次数:
edit.js
App.Views.Edit = Backbone.View.extend({
events: {
"submit form": "save"
},
initialize: function() {
_.bindAll(this, 'render');
this.model.bind('change', this.render);
this.render();
},
save: function() {
var self = this;
var msg = this.model.isNew() ? 'Successfully created!' : "Saved!";
this.model.save({ title: this.$('[name=title]').val(), body: this.$('[name=body]').val() }, {
success: function(model, resp) {
new App.Views.Notice({ message: msg });
Backbone.history.saveLocation('documents/' + model.id);
},
error: function() {
new App.Views.Error();
}
});
return false;
},
render: function() {
$(this.el).html(JST.document({ model: this.model }));
$('#app').html(this.el);
// use val to fill in title, for security reasons
this.$('[name=title]').val(this.model.get('title'));
this.delegateEvents();
}
});
index.js
App.Views.Index = Backbone.View.extend({
initialize: function() {
this.render();
},
render: function() {
$(this.el).html(JST.documents_collection({ collection: this.collection }));
$('#app').html(this.el);
}
});
notice.js
App.Views.Notice = Backbone.View.extend({
className: "success",
displayLength: 5000,
defaultMessage: '',
initialize: function() {
_.bindAll(this, 'render');
this.message = this.options.message || this.defaultMessage;
this.render();
},
render: function() {
var view = this;
$(this.el).html(this.message);
$(this.el).hide();
$('#notice').html(this.el);
$(this.el).slideDown();
$.doTimeout(this.displayLength, function() {
$(view.el).slideUp();
$.doTimeout(2000, function() {
view.remove();
});
});
return this;
}
});
App.Views.Error = App.Views.Notice.extend({
className: "error",
defaultMessage: 'Uh oh! Something went wrong. Please try again.'
});
该应用程序:
var App = {
Views: {},
Controllers: {},
Collections: {},
init: function() {
new App.Controllers.Documents();
Backbone.history.start();
}
};
解决方法:
如果您使用的是主干0.5.x,则将Backbone.Controller重命名为Backbone.Router
从文档:
Upgrading to 0.5.0+
We’ve taken the opportunity to clarify some naming with the 0.5.0 release. Controller is now Router, and refresh is now reset. The previous saveLocation and setLocation functions have been replaced by navigate. Backbone.sync’s method signature has changed to allow the passing of arbitrary options to jQuery.ajax. Be sure to opt-in to pushState support, if you want to use it.
内容总结
以上是互联网集市为您收集整理的javascript – BackboneJs:未捕获TypeError:undefined不是函数全部内容,希望文章能够帮你解决javascript – BackboneJs:未捕获TypeError:undefined不是函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。