gpt4 book ai didi

javascript - 在迭代中设置对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:46:53 25 4
gpt4 key购买 nike

在父 View 中,我传递了 Backbone 模型的一部分(该模型称为 Library,因此我将 Library.book 对象作为 this.book。当我提醒 this.book 时,它看起来像这样:

{"favoritePages":["384","383","385"],"summariesOfFavoritePages":["Cool","Great","Informative"]}

我有一个主干 View ,如下所示:

var LibraryBookView = Backbone.View.extend({
initialize: function(options) {
if (options) {
_.extend(this, options);
}
},
render: function () {

// FOR TESTING
alert(JSON.stringify(this.book));

var that = this;

$(".test").on('click', function(e) {
var id = $(this).data("id");
var pagesIndex = $.inArray( id + "", that.book.favoritePages );
that.book.favoritePages[pagesIndex] = "DELETED"; // BASICALLY WHAT I WANT TO DO WITH BACKONE'S SET
});

}
});

传递模型的库 View (父 View )部分如下所示:

var LibraryView = Backbone.View.extend({
initialize: function(options) {
if (options) {
_.extend(this, options);
}
this.render();

_.each(this.model.get("library").books, function(book){

var libraryBookView = new LibraryBookView({
el: $('.content'),
book: book,
model: this.model
});

libraryBookView.render();
});
},

基本上,我想用 this.model.set 更新 this.book 但不确定如何使用 books 迭代中的数组来完成它?

最佳答案

我可以想到几个解决方案:

  • 与@Lochemage 所建议的相同。使用 bookIndex,但假设书籍索引不会改变。对于设置模型,我建议如下:

if( this.model.get('library').books[this.bookIndex] != undefined )
this.model.get('library').books[this.bookIndex] = this.book;

  • 使用 Underscore 库的 findWhere方法。假设 book 在所有 library.books 属性中是唯一的。
var book = _.findWhere(this.model.get("library").books, this.book);
if(book != undefined)
book = this.book;

关于javascript - 在迭代中设置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com