Part 5: 任務列表檢視
準備
開始本教程之前,你需要了解以下幾點:
- alexyoung / dailyjs-backbone-tutorial提交到了fcd653ec6版本
- 第二部分中的API key
- 第二部分中的“Client ID”
- 更新
app/js/config.js
成你自己的key(如果你檢出了我的程式碼)
要檢出原始碼,請執行以下命令(或用Git GUI工具):
git clone git@github.com:alexyoung/dailyjs-backbone-tutorial.git
cd dailyjs-backbone-tutorial
git reset --hard fcd653ec6
線框
下面是我們需要構建的一些介面UI元素:
- 兩欄佈局:左邊任務右邊列表
- 每個列表都有編輯和刪除
- 一些用於刪除專案和清除已完成專案的按鈕
- 核取方塊(任務狀態控制)
具體的線框如下圖所示:
在這裡,我們將用一個無序列表來展示任務列表。
列表項
儘管比較簡單,實現一個任務選單導航還是涉及到了Backbone.js的一些元素:
- HTML模板
- Backbone檢視:
ListMenuView
,ListMenuItemView
- Backbone集合:
TaskLists
ListMenuView
主要用於任務左側的選單導航,ListMenuItemView
用於具體的任務列表專案,具體的都是用的ul
包含li
來實現的。
新建app/js/views/lists
目錄來放任務列表相關的Backbone.View
,新建app/js/templates/lists
放對應的模板
選單列表容器檢視:ListMenuView
這個檢視寫在app/js/views/lists/menu.js
:
define(['views/lists/menuitem'], function(ListMenuItemView) {
var ListMenuView = Backbone.View.extend({
el: '.left-nav',
tagName: 'ul',
className: 'nav nav-list lists-nav',
events: {
},
initialize: function() {
this.collection.on('add', this.render, this);
},
render: function() {
// TODO
}
});
return ListMenuView;
});
這個檔案依賴了views/lists/menuitem
模組。繫結的.left-nav
元素是在AppView
的模板中的。導航選單本身是一個無序列表,而且還是用了一些相關的className來相關聯。
這個檢視還需要一個集合,來例項化檢視。例如:new ListMenuView({ collection: lists })
就是通過lists
集合來例項化的。
render
方法就是這樣的:
render: function() {
var $el = $(this.el)
, self = this;
this.collection.each(function(list) {
var item, sidebarItem;
item = new ListMenuItemView({ model: list });
$el.append(item.render().el);
});
return this;
}
所有檢視的元素都包含在ListMenuItemView
裡,通過遍歷模型集合來例項化這個檢視。
選單列表項檢視:ListMenuItemView
app/js/views/lists/menuitem.js
和上面的檢視大體上類似,它區別是主要是通過使用檢視模板和Backbone來進行事件繫結:
define(['text!templates/lists/menuitem.html'], function(template) {
var ListMenuItemView = Backbone.View.extend({
tagName: 'li',
className: 'list-menu-item',
template: _.template(template),
events: {
'click': 'open'
},
initialize: function() {
this.model.on('change', this.render, this);
this.model.on('destroy', this.remove, this);
},
render: function() {
var $el = $(this.el);
$el.data('listId', this.model.get('id'));
$el.html(this.template(this.model.toJSON()));
return this;
},
open: function() {
var self = this;
return false;
}
});
return ListMenuItemView;
});
app/js/templates/lists/menuitem.html
模板:
<a href="#" class="list-title" data-list-id=""></a>
請注意,{}
是用於插入值。這是由Underscore的模板系統提供的
在檢視中,click
事件發生時會觸發open
處理函式,模型也繫結了destroy
和change
兩個事件來執行不能的處理
在render
裡可以用template
方法來插入模板資料:
$el.html(this.template(this.model.toJSON()));
模型通過toJSON
把title
和id
轉換成template
需要的資料格式
呼叫ListMenuView
修改app/js/app.js
檔案將ListMenuView
作為依賴加入到define
中:
define([
'gapi'
, 'views/app'
, 'views/auth'
, 'views/lists/menu'
, 'collections/tasklists'
],
function(ApiManager, AppView, AuthView, ListMenuView, TaskLists) {
在之前我們加了console.log
在控制檯輸出列表的名稱,刪除這段替換成渲染ListMenuView
檢視的程式碼:
connectGapi: function() {
var self = this;
this.apiManager = new ApiManager(this);
this.apiManager.on('ready', function() {
self.collections.lists.fetch({ data: { userId: '@me' }, success: function(res) {
self.views.listMenu.render();
}});
});
}
回到App
建構函式裡通過相關集合來例項化listMenu
檢視:
var App = function() {
this.views.app = new AppView();
this.views.app.render();
this.views.auth = new AuthView(this);
this.views.auth.render();
this.collections.lists = new TaskLists();
this.views.listMenu = new ListMenuView({ collection: this.collections.lists });
this.connectGapi();
};
執行
執行伺服器node server
,訪問http://localhost:8080
,你可以看到一個無序簡單的任務列表
總結
現在我們通過Google API拿到註冊使用者的任務列表並顯示到了也頁面中。雖然我們還沒有任何的樣式可能也不算什麼,但是你可以用Google APIs和相同的服務來做類似的應用,還是值得自我鼓勵下的。
這部分教程的程式碼:commit 82fe08e on GitHub
相關文章
- Part 6: 新建任務列表
- Part 7: 編輯任務列表
- Part 8: 刪除任務列表
- Part 9: 任務項
- win10任務檢視怎麼用 win10任務檢視功能詳細介紹Win10
- 檢視Spark任務的詳細資訊Spark
- EXPDP/IMPDP任務的檢視與管理
- exp / imp 任務的檢視與管理
- win10任務檢視快捷鍵是什麼 開啟win10任務檢視的方法Win10
- Vue 2.0 入門系列(5)元件例項之任務列表Vue元件
- Win10任務檢視怎麼刪除記錄 win10清除任務檢視記錄的教程Win10
- win10任務檢視怎麼關閉歷史記錄 關閉任務檢視的具體方法Win10
- 如何檢視資料庫中的job任務資料庫
- Linux基礎命令---lpstat檢視列印任務Linux
- Windows10系統如何關閉任務檢視Windows
- django入門-檢視-part3Django
- win10快捷鍵任務視角怎麼用_win10怎麼快捷鍵切換任務檢視Win10
- win10任務檢視記錄無法刪除怎麼辦_win10任務檢視記錄刪除不掉解決方法Win10
- 微信小程式-檢視列表渲染微信小程式
- 列表檢視控制元件(轉)控制元件
- MySQL 5.5建立和檢視資料庫計劃任務(event)MySql資料庫
- mysqlbinlog命令詳解 Part 5 通過位置和時間檢視日誌MySql
- 移動UX設計模式:列表檢視vs網格檢視UX設計模式
- Part 10: 任務項新增、修改和切換狀態
- linux後臺執行和關閉、檢視後臺任務Linux
- Oracle 11g 系統自帶任務的檢視和更改Oracle
- 【任務】資訊檢索.MOOC學習
- solaris下檢視OS版本及Patch列表
- Win10喚醒系統裝置和任務檢視命令大全Win10
- 使用 Vim 管理任務列表和訪問 Reddit 和 Twitter
- Laravel 5.4 入門系列 3. 任務列表顯示Laravel
- CommMonitor列表檢視有什麼功能特性?
- 今天,總監說要一個任務排程的列表。
- win10電腦中虛擬桌面、任務檢視功能的使用方法Win10
- win10任務檢視記錄無法刪除的解決辦法Win10
- 任務佇列,巨集任務與微任務佇列
- 聊聊android列表檢視的快取設計Android快取
- 在近期任務列表顯示單個APP的多個ActivityAPP