Tag: backbone.js

为什么Backbone Collection fetch不返回承诺

以下示例代码运行良好: Auth_controller.prototype.isLogged = function(){ //Check if the user is authenticated var getAuthStatus = this.auth_model.fetch(); return getAuthStatus; }; Auth_controller.prototype.redirect = function(fragment, args, next){ var getAuthStatus = this.isLogged(); var self = this; $.when(getAuthStatus).then(function(response){ //Do something with the response } }); 这似乎不适用于Collection。 当我控制台登录集合时,我得到一个空集合。 我知道我可以在方法中使用成功回调函数(已经测试过),但我不想这样做,因为我希望函数返回一个我可以从其他函数调用的promise。 编辑 – >不,抱歉它在成功回调中也不起作用。 有关解决方法的任何建议吗? 编辑; 此图显示了从模型和集合获取方法返回的内容。 除非我做错了很明显,否则我不明白为什么会这样。 当控制台在成功回调中记录返回的响应时,我看到填充了屏幕截图中显示的空对象。 EDIT2: 这就是我的collections品: define([ /*— libraries —*/ […]

Backbone.js`model.destroy()`自定义转换?

当我使用Backbone的model.destroy() ,它似乎会自动从DOM中删除该视图。 有没有办法让我使用destroy()发送DELETE请求,但是自己从DOM中删除视图? 就像是: this.model.destroy({ wait: true, success: function(){ $(‘#myElement’).animate({ “height” : “0”, 1000, function(){$(‘#myElement’).remove()} }); } });

JavaScript错误:“不是构造函数”

我正在使用backbone.js以及jquery和underscore.js 这是我的一些代码(它还没有做任何事情)。 奇怪的是,在点击“/#users”时,没有错误。 错误发生的唯一时间是我然后单击转到另一个哈希,然后单击返回“/#users”。 这是我的代码的一部分,用于向最终Users = new Users();接收错误的行Users = new Users(); 错误说“用户不是构造函数”: var User = Backbone.Model.extend({ url: function(){return ‘api/user/id/’ + this.id;} }); var Users = Backbone.Collection.extend({ model: User, url: function(){return ‘api/users’;}, initialize: function() { } }); var UsersView = Backbone.View.extend({ initialize: function() { this.users = this.options.users; this.render(); }, render: function() { _(this.users).each(function(){ // $(‘#app’).append(‘here’); }); […]

Jquery删除了两次调用droppable方法的回调

我对以下事件有一个看法。 视图ID是“文件夹块”。 我的元素是View是这样的: 以下是骨干事件。 events{ “mousedown .all-folders”: “dragCustomFolders” }, dragCustomFolders: function(e){ $(‘#folders ul li’).draggable({ cursor: ‘move’, drag: this.dragElement, revert: “invalid” }); $(‘#folders li’).droppable({ drop: this.cardDrop, }); } 当我将li从一个ul拖到另一个ul时,只会调用一次。 当我将li元素拖到同一个ul元素中的另一个li元素时,调用两次drop回调函数。 如何解决这个问题。

如何从骨干视图中正确删除任何必要的内容?

嘿我尝试删除所有内容后,在使用this.close()触发上一个或下一个函数后调用搜索视图文件中的close函数,但它正在删除完全影响导航function的视图…我想知道如何去做完成后删除所有内容,否则在路由器中多次出现vent.on。 这是我的路由器文件: define([ ‘jquery’, ‘underscore’, ‘backbone’, ‘views/page’, ‘models/search’, ‘views/search’, ‘text!templates/search.html’, ‘models/song’, ‘text!templates/song.html’ ], function($, _, Backbone, PageV, SearchM, SearchV, SearchT, SongM, SongT) { var vent = _.extend({}, Backbone.Events); var currentView, page, search; Backbone.View.prototype.close = function () { this.remove(); this.unbind(); if (this.onClose) { this.onClose(); } }; var AppRouter = Backbone.Router.extend ({ routes: { ‘page/:id’: ‘showPage’, ‘search’: […]

Backbonejs使用el

我创建了2个单独的视图,1个用于渲染模板,另一个用于绑定事件,然后我尝试将它们合并为一个,在这种情况下它会导致Uncaught TypeError: Object [object Object] has no method ‘template’ 。 它呈现模板和事件也正常,但我收到错误。 edit.js,这是组合视图,我认为它与错误来自的el有关 window.EditView = Backbone.View.extend ({ events: { “click #btn-save” : “submit” }, initialize: function() { this.render(); }, render: function() { $(this.el).html(this.template()); return this; }, submit: function () { console.log(‘editing’); $.ajax({ … }); return false; } }); var editView = new EditView(); signin.js,这是我无法合并的视图,因为ajax调用和在SigninView的$(this.el)中使用el会导致模板的呈现错误 window.toSigninView = […]

Backbone.js Pushstate Routing和PHP Framework的路由器

我正在使用Backbone.js和PHP MVC框架(Codeigniter,Laravel)。 我对使用Pushstates时PHP路由器和Backbone路由器如何处理URL感到困惑。 (我还没有开始使用pushstates,仍然使用hashbangs # )。 我不是在单页应用程序上工作,而是该站点由几个页面组成,这些页面本身就像单页面应用程序。 问题:如果我有一个页面http://domain.com/user/user123 ,并点击链接http://domain.com/user/user123#photos通过AJAX加载一些照片,我想摆脱# ,我预见到用户在点击链接后访问http://domain.com/user/user123/photos决定将URL复制并粘贴到另一个浏览器选项卡中的问题,将会看到错误404页面作为PHP框架路由器(如果我正确地假设PHP路由器在骨干网之前首先处理URL请求)不能识别此URL的存在。 该问题应如何解决? 我认为会出现的另一个问题是当用户直接访问http://domain.com/user/user123/photos时应该如何呈现视图? 是否应在PHP视图(对于用户直接输入URL的实例)和backbone.js视图(对于用户从http://domain.com/user/user123上单击链接的情况)复制HTML代码http://domain.com/user/user123 )? 这对我来说似乎不是最佳解决方案。 或者可以通过骨干在两种情况下以某种方式呈现View以避免重复代码? 请指教 :)

从Ul骨干中移除li

我试图建立一个非常简单的ul,你有一个输入框和添加按钮,点击添加按钮,输入的文本被附加到ul 这是我的代码: HTML: Add JS: $(function(){ var myCollection = Backbone.Collection.extend(); var myView = Backbone.View.extend({ el:$(‘body’), tagName:’li’, initialize : function(e){ this.collection.bind(“add”,this.render,this); }, events:{ ‘click #add’ : ‘addfoo’, ‘click .button’:’removefoo’ }, addfoo:function(){ var myname= $(‘#name’).val(); $(‘#name’).val(”); console.log(‘name entered: ‘+myname); this.collection.add({name:myname}); }, removefoo:function(){ //need the code here }, render:function(){ $(‘#mylist’).empty(); this.collection.each(function(model){ $(‘#mylist’).append(”+model.get(‘name’) + “”+”delete”+””); }); } }); var […]

骨干validation问题

我使用了Backbonevalidation插件(可从以下url获得: https : //github.com/thedersen/backbone.validation )。 我也使用了Bootstrap 3.我想validationonChange或onBlur事件。 我这样使用它: 在Models.js中,我有这样的规则: validation: { miliage: { required: true, pattern: ‘number’, msg: ‘Укажите корректный пробег’ }, email : { required: true, pattern: ’email’, msg: ‘Укажите корректный email’ }, }, 在渲染html后的Views.js中我绑定了validation插件: Backbone.Validation.bind( this, { valid: function( view, attr, selector ) { console.log(‘valid’); console.log( attr ); control = view.$(‘[‘ + selector […]

Backbonejs保存文件和表单数据

我在表单和表单数据中有一个上传图片。 表单数据存储在模型中 如何将表单数据与文件数据组合并保存模型 我正在设置模型属性以及如何在属性中包含文件数据。 我发现此链接强制Backbone将属性保存为文件 。 我无法将它与我的表格联系起来 User = Backbone.Model.extend({ readAvatar : function (file, callback) { var reader = new FileReader(); // File API object for reading a file locally reader.onload = (function (theFile, self) { return function (e) { // Set the file data correctly on the Backbone model self.set({avatar_file_name : theFile.name, avatar_data : […]