Backbone.Collection.Create 未在视图中触发“添加”

2023-12-06

希望这是一个简单的问题。我正在努力学习骨干,但我坚持做一件非常简单的事情。当我使用 create 方法更新集合时,视图上的渲染永远不会被调用。我认为这应该在不显式调用 render 的情况下发生。我没有加载任何动态的东西,在这个脚本触发之前它都在 dom 中。单击事件工作得很好,我可以将新模型添加到集合中,但视图中的渲染永远不会触发。

$(function(){

window.QuizMe = {};

// create a model for our quizzes
QuizMe.Quiz = Backbone.Model.extend({
// override post for now
"sync": function (){return true},

});

QuizMe._QuizCollection = Backbone.Collection.extend({
model: QuizMe.Quiz,
});

QuizMe.QuizCollection = new QuizMe._QuizCollection

QuizMe.QuizView = Backbone.View.extend({

el:$('#QuizMeApp'),

template: _.template($('#quizList').html()),

events: {
  "click #addQuiz" : "addQuizDialog",
},

initialize: function() {
// is this right?
  _.bindAll(this,"render","addQuizDialog")
  this.model.bind('add', this.render, this);

},

addQuizDialog: function(event){
  console.log('addQuizDialog called')
  QuizMe.QuizCollection.create({display:"this is a display2",description:"this is a succinct description"});  
},

render: function() {
  console.log("render called")
},
});

QuizMe.App = new QuizMe.QuizView({model:QuizMe.Quiz})

});

你的问题是你绑定到model:

this.model.bind('add', this.render, this);

但你要添加到收藏:

QuizMe.QuizCollection.create({
    display:     "this is a display2",
    description: "this is a succinct description"
});

视图通常具有关联的集合或模型,但不能同时具有两者。如果你想要你的QuizView列出已知的测验:

  1. 你可能应该称之为QuizListView或类似的东西。
  2. 创建一个新的QuizView显示单个测验;这个观点会有一个模型。
  3. 返工你的QuizListView与集合一起工作。

你最终应该得到这样的结果:

QuizMe.QuizListView = Backbone.View.extend({
    // ...
    initialize: function() {
        // You don't need to bind event handlers anymore, newer
        // Backbones use the right context by themselves.
        _.bindAll(this, 'render');
        this.collection.bind('add', this.render);
    },
    addQuizDialog: function(event) {
        this.collection.create({
            display:     "this is a display2",
            description: "this is a succinct description"
        });
    },
    render: function() {
        console.log("render called")
        // And some stuff in here to add QuizView instances to this.$el
        return this; // Your render() should always do this.
    }
});

QuizMe.App = new QuizMe.QuizView({ collection: QuizMe.QuizCollection });

并注意后面的逗号render,较旧的 IE 对此感到不安并导致难以追踪的错误。

我会给你一个快速演示但是http://jsfiddle.net/目前已关闭。当它回来时,你可以开始http://jsfiddle.net/ambiguously/RRXnK/为了发挥作用,该小提琴已经设置了所有适当的 Backbone 内容(jQuery、Backbone 和 Underscore)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Backbone.Collection.Create 未在视图中触发“添加” 的相关文章

  • 在 Backbone 渲染方法中调用 jQuery 插件

    我在 Backbone 中有一个渲染方法 基本上是这样的 render function tmpl this template attrs appendTo this el return this 这是从路由器操作中调用的 action f
  • Backbone JS 模型和集合 URL

    如果我有一个名为 Book 的模型和一个名为 Library 的集合 定义如下 Book app Book Backbone Model extend defaults title No title author Unknown Libra
  • Backbone 对象渲染没有方法 apply - 绑定问题

    所以我在我的 AppView 中这样做 var flowerModel new app DataModel title flower values tulip rose dandelion dataToShow tulip rose dan
  • 在 Backbone.js 中,为什么静默更改最终会触发更改事件?

    当我经过时 silent true 在 Backbone 模型中设置属性时 为什么不直接抑制change attribute事件 下次更改属性时触发该事件有什么好处 Update Backbone 0 9 10 改变了传递行为 silent
  • Backbone - 从 API 获取 JSON 数据

    这几天我在玩Backbone 我想从 Twitter 搜索 API 接收一些数据 但我真的不明白它是如何工作的 这是我的代码 function Tweet Backbone Model extend Tweets Backbone Coll
  • 如何将属性传递到 Backbone 视图?

    我正在使用 Backbone v1 0 0 开发我的应用程序 在开始工作期间 现在已经更新到 v1 1 0 所以在我以前能做的地方 var myView new MyView hash something 并访问hash在视图内部使用 th
  • Coffee HAML 中的部分内容 (.hamlc)

    我在 Rails 后端使用backbone js哈姆咖啡 https github com netzpirat haml coffee 它是由haml 咖啡 资产 https github com netzpirat haml coffee
  • 使用 $.html() 时如何提高渲染性能

    我正在研究骨干demo app https jsfiddle net o75r7fu9 8 显示推文列表 当我用不同的数据替换所有 推文 时 我使用以下命令清除列表 html render function item table html
  • 避免从主干视图重新渲染图像和其他内容

    当我重新渲染主干视图时 有什么好方法可以跳过重新渲染图像和谷歌地图等内容 每次重新渲染视图时 我的照片和地图视图都会闪烁得很厉害 这种情况很常见 特别是对于图像 模板引擎从头开始布局布局 这会导致图像标记再次从服务器或从缓存中获取位图 当然
  • Backbone.Marionette 在路由更改时更改区域

    我的应用程序有一个主区域 有时主区域中会有一些应可通过 URL 访问的子区域 主要区域内容由应用程序路由器的功能更改 因为他知道主要区域 但是子视图中的临时区域呢 例如网址 docs将显示文档链接列表以及 doc id应在列表旁边显示文档的
  • 使用主干渲染引导模式

    我认为代码可以更好地解释我的问题 风景 App Views ErrorModal Backbone View extend template window template errorModal render function this e
  • Backbone.js 和层次结构/树

    我正在开发一个应用程序 该应用程序需要一个表单 允许用户管理任意深度的产品类别层次结构 我可以很容易地将数据加载到页面上 但我有点不知道需要做什么才能使这样的东西与backbone js一起工作 基本上 我正在寻找嵌套的 UL 当用户选择一
  • 与 jQuery 配合使用的backbone.js 替代品?

    有没有像backbone js这样的东西的替代品 它为你的前端javascript提供了一些框架 结构 但没有任何不需要的依赖项 并且与jQuery更紧密地结合在一起 您需要一个易于使用的 MVC 框架吗 因为Sammy js http s
  • 在主干/下划线模板中使用循环

    我有一个backbone js underscore js 模板 我将其输入到主干视图中进行渲染 视图传递一个包含数组的模型posts对象 我称之为post在模板中 Problem 当我尝试循环遍历数组的所有元素时posts 我收到一个错误
  • 覆盖骨干模型更改事件

    我认为我想做的事情很简单 我只是不知道该怎么做 当我的模型属性之一发生更改以便将一些数据传递给事件处理程序时 无论更改是值的增加还是减少 我想触发我自己的事件 基本上我希望我的处理程序在视图中执行此操作 handler function i
  • 如何在执行路由方法之前运行“中间件”函数?

    假设我有一个主干路由器 例如 routes homepage catalog id catalogPage catalog id products id2 productPage homepage gt doStuff catalogPag
  • 如何从 Backbone 集合中提取多个属性?

    我试图从 Backbone 集合中提取多个属性 但它返回undefined 收藏 id 1 name raju age 23 sex male hobbies id 2 name ramesh age 43 sex male hobbies
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • MarionetteJS:应用程序区域与布局[重复]

    这个问题在这里已经有答案了 我正在阅读最新版本 2 3 0 的文档 它说应用程序区域现已被弃用 应用领域 警告 已弃用 此功能已弃用 而不是使用 应用程序作为视图树的根 您应该使用布局 看法 要将布局视图的范围限制为整个文档 您可以设置 它
  • Backbone Marionette CompositeView 排序列表 - 在添加时呈现额外的模型

    这是小提琴 http jsfiddle net QhQ8D 10 http jsfiddle net QhQ8D 10 代码在下面 制作一个聊天应用程序 需要一个排序的 连接的用户列表 名称上带有比较器的图形集合连接到 CompositeV

随机推荐