我已經掌握了Aaron Saunders的ACS Sync。由於他的自述文件比我開始時的知識稍多一點,我想我會把自己的小手冊放在這裏供將來參考。
首先,你需要了解的第一主幹,然後合金和骨幹的特定組合。 Backbone允許您執行面向對象的Javascript:如果您的應用程序都是關於書籍的,您可以定義一本書的外觀應該如何。你可以稱它爲一個類,但骨幹稱它爲一個模型。隨你。
基本上,骨幹變成一個Javascript對象到模板(模型),從中可以創建任意數量的具體實例。通過創建這個模型(也JavaScript對象)的一個實例,您提供的對象有一大堆的功能,比如添加事件偵聽器時對象的值以任何方式改變時觸發的選項。如果你沒有使用合金
創建骨幹模型及其實例
,打造骨幹模型的方法是:
var Book = Backbone.Model.extend({});
在這個例子中,你不加入任何規格。因此,創建的「Book」模板/模型獲得了很多Backbone功能,如添加事件偵聽器的選項,但沒有您自己定製的功能。
然後,使用new
關鍵字,您可以創建此模型的特定情況下,即特定的書籍。像:
var myNewBook = new Book({title:"Moby Dick"}};
合金模型:在應用程序文件/模型
現在,合金作品在該模型在app/models文件夾中的特定文件中定義這樣一種方式,並且該文件的名稱是模型的名稱。所以如果你想創建一個Book模型的合金方式,你應該創建一個文件app/models/book.js,並且該文件應該提供一個導出結構如下(使用Book的概念作爲例子):
exports.definition = {
config: {
columns: {
"title": "String",
"pages": "Number",
},
defaults: {
"title": "Default book title",
"pages": 0,
},
adapter: {
"type": "sql"
}
}
}
請注意,這是一個樣的東西最少來定義你的模型。而「適配器」位是非常可選的:稍後我會將它列入清單。它的作用是指定Backbone應該將從此模型創建的Javascript對象(僅存儲在內存中)同步到特定的數據存儲區。
你可能會想要定義更多。事實上,如果你想做Backbone/Alloy/ACS同步,你將不得不這樣做。但首先,我們嘗試在Javascript中創建一個Backbone對象。
的合金模型
創建骨幹對象現在,每當你要創建的圖書模型的實例,你在你的代碼做的是使用Alloy.createModel
用正確的型號和參數字典。像這樣:
var oneBook = Alloy.createModel('Book',{title:"Moby Dick",pages:300});
合金將查找在app/models文件夾的「book.js」文件,使用其中定義的所有屬性,並附帶一些合金花俏返回骨幹對象。
(請注意,合金似乎有點模糊詞的含義混淆。您實際上並沒有創建模型,而是模型的一個實例。或者,也許我只是不明白這一點)
的ACS適配器
亞倫桑德斯的自動化合金/骨幹對象的同步解決方案包括調整該合金的使用骨幹模型的方式。這就是爲什麼你需要在爲了從他的項目至少有兩個文件所有的工作:
- /app/assets/alloy/sync/acs.js(這是「銜接」那安排合金/骨幹對象同步到ACS)
- 應用程序/ alloy.jmk(這個文件做了一些必要的文件系統改寫正在安裝應用程序時)
當你安裝這些文件會發生什麼現在骨幹同步功能現在可以使用一個稱爲的新適配器'ACS'。
骨幹模型具有各種附加功能,包括將對象同步到數據存儲(如SQLite數據庫或localStorage)。此外,Backbone允許程序員創建「適配器」,告訴它將數據同步到自定義數據存儲區。
亞倫桑德斯的解決方案將數據同步到ACS。通過將acs.js文件包含在適當的文件夾中,確保Backbone/Alloy將使用該文件來組織同步。
的哈克部分
所以,如果你定義如上定義的Book模型,你在Javascript中使用Alloy.createModel(),則合金將尋找book.js文件中創建一個圖書並將其用作添加自定義值(如標題)的模板。
此外,由於acs.js適配器,它會自動將新對象踢到ACS。
也就是說,如果你有一點幫助,因爲有一點可能會在稍後清理,但現在仍然需要。即:在模型定義中,您需要包含一個帶有兩個重複對象名稱的參數的設置字典。 (是的,這聽起來很傻)
所以這是模型文件的完整例子:
exports.definition = {
config: {
columns: {
"title": "String",
"pages": "Number",
},
defaults: {
"title": "Default book title",
"pages": 0,
},
adapter: {
"type": "acs"
},
"settings": {
"object_name": "users",
"object_method": "Users"
}
}
}
總之 我希望這有助於明確合金將如何利用骨幹網和亞倫桑德斯如何建立在這個組合之上。
,我還沒有回答我自己的問題是:
我在你的軌道上有類似的問題 - 雖然很好的解釋! – Yozef 2014-12-03 23:15:51