2012-01-05 104 views
4

在Knockout.js我创建一个observableArray推车型为:Knockout.js observableArray vs Backbone.js Collection - 有什么区别?

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"} 
]); 

刚刚是多么的不同,这些2层结构从彼此?

为了使这些数据结构与标准的JavaScript数组不同,到底什么是幕后?

回答

9

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

Backbone.js Collection

  • 从服务器
  • 取模型触发修改/添加/删除事件
  • 听模型事件,并引发他们对藏品
  • 模型的自动验证
  • 很多跨浏览器的易用性方法用于处理集合(每个,最大,排序,缩小等)

Knockout.js observableArray

  • 曲目添加和删除的元素 - 更新UI自动
  • 的阵列的方法跨浏览器实现(例如IE8有问题瓦特/本地.indexOf()
  • 便于学习destroy & destroyAll方法Rails开发者将在对象上_destroy属性设置为true - 这将告知铁路的ActiveRecord的哪些对象应该被删除。

Backbone.Collection只与Knockout.js一起使用Backbone.js框架和observableArray。因为它们是框架的一部分,所以将它们彼此进行隔离并不是真实的,如果您的应用程序构建在Backbone上,则不能使用observableArray,反之亦然。

如果你想知道什么究竟是怎么回事幕后那么这里的背后,是源代码:

+0

谢谢 - 两者是概述很有帮助。 – PhillipKregg 2012-01-06 02:20:08

相关问题