gpt4 book ai didi

javascript - Knockout.js observableArray vs Backbone.js Collection - 有什么区别?

转载 作者:搜寻专家 更新时间:2023-11-01 05:07:01 27 4
gpt4 key购买 nike

在 Knockout.js 中,我创建了一个 observableArray 来将模型插入:

function Room(data) {
this.name = ko.observable(data.name);

}


function RoomViewModel() {
var self = this;
self.rooms = ko.observableArray([]);
self.newRoomText = ko.observable();

self.addRoom = function() {
self.rooms.push(new Room({ name: this.newRoomText() }));
self.newRoomText("");
$("#modal").dialog("close");
}.bind(self);
}

在 Backbone.js 中,我会创建一个集合来存储我的模型:

var Book = Backbone.Model.extend();

var Books = new Backbone.Collection([
{name: "Abe Lincoln - Vampire Hunter"}
{name: "Pride and Prejudice and Zombies"}
]);

这两种结构有何不同?

究竟是什么让这些数据结构不同于标准的 Javascript 数组?

最佳答案

这是一个很难完全回答的问题,但这是我的看法:)。

Backbone.js Collection :

  • 从服务器获取模型
  • 触发更改/添加/删除事件
  • 监听模型事件并在集合上触发它们
  • 模型的自动验证
  • 许多跨浏览器的集合处理方法(each、max、sort、reduce 等)

Knockout.js observableArray :

  • 跟踪添加和删除的元素 - 自动更新 UI
  • 数组方法的跨浏览器实现(例如 IE8 在原生 .indexOf() 方面存在问题)
  • 为 Rails 开发人员提供方便的 destroydestroyAll 方法,将对象的 _destroy 属性设置为 true - 这个将通知 Rail 的 ActiveRecord 哪些对象应该被删除。

Backbone.Collection 使用 Backbone.js 框架,observableArray 仅使用 Knockout.js。孤立地将它们相互比较是没有意义的,因为它们是框架的一部分,如果您的应用程序构建在 Backbone 上,则不能使用 observableArray,反之亦然。

如果您想知道到底在幕后发生了什么,那么这里是源代码:

关于javascript - Knockout.js observableArray vs Backbone.js Collection - 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8748198/

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