javascript - 输入清算问题

标签 javascript jquery backbone.js underscore.js

我有一个backbone.js应用程序,其中有三个 View (其中两个是 subview )

我在这里放置了该应用程序的简化版本:

http://jsfiddle.net/GS58G/

问题是,如果我创建一个产品(默认为 Book subview ),并输入“一本好书”,然后单击“添加产品”,则“一本好书”为已清除。如何解决此问题,以便在添加其他产品时保存“一本好书”?

我对产品书籍、杂志和视频的 subview 如下所示:

var ProductBookView = Backbone.View.extend({
     render: function () {
          this.$el.html( $("#product_book_template").html() );
     }
});

var ProductVideoView = Backbone.View.extend({
     render: function () {
          this.$el.html( $("#product_video_template").html() );
     }
});

var ProductMagazineView = Backbone.View.extend({
     render: function () {
          this.$el.html( $("#product_magazine_template").html() );
     }
});

最佳答案

我已经 fork 了你的 jsfiddle 并更新了它。这是工作jsfiddle

问题在此声明中:

var productBookView = new ProductBookView({
    el: $('.product-view')
});

您需要更新它:

var productBookView = new ProductBookView({
    el: $('.product-view:last')
});

原因是,ProductBookViewel 元素应该位于最后一个.product-view。在您提供的代码中,el 被分配给 DOM 中存在的所有 div 元素,这些元素具有名为 product-view 的类。因此,每次添加新产品时,类名为 product-view 的所有 div 元素都会使用 product_book_template html 进行更新。因此输入框被清除。

关于javascript - 输入清算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188469/

相关文章:

javascript - 在窗口大小调整时更改主干 View 模板

javascript - 网格 JavaScript 中的随机框

javascript - 如何为整个系列而不是单个数据启用悬停效果

javascript - 如果值太高,本地存储将停止工作

javascript - $.parseJSON(data, true) 抛出

jquery - Event.preventDefault() 在所有浏览器上的 Jquery 中失败

javascript - 获取传入的 backbone.js 模型实例的模型类型

Jquery:最小化 Accordion 标签点击标签内容

javascript - 使用 JS/JQuery 隔离 HTML 中的数字字符

mysql - 数据库 ID 未在 Rails 和 Backbone.js 之间传递