動民主前端開發指南

請登入後使用

一般資訊

請參考 body 的設定, 在頂層元素使用 main (ng-app) 及 ctrl.main (ng-controller)

各種資料型別 (提案, 對策, 方案, 留言等) 都有其對應的 angularjs controller. 使用前請設定 ng-controller

各種資料型別都會有一些基本屬性, 包含:

使用 list 的方法很簡單, 用 ng-repeat="(k,v) in list" 即可, k 存的是資料的索引 (key, 或稱 index), v 則是資料本身. 可直接參考下面的提案列表範例. 此外, 每種資料型別也都可以被按讚, 建立投票選項 或是與其他資料型別產生關聯. 詳情請見後面的解釋.

controller 使用範例 (提案列表為例)
{{v.name}} by {{v.creator.username}}
登入相關

登入與登出的按鈕請參考下列:

login with facebook
logout
搭配 ng-show:
login with facebook
logout
使用者相關

目前暫時使用臉書登入, 取得的使用者資訊都存在 user 中, 可以用看裡面有什麼資料可以使用. 常見的包括 user.id, user.username, user.displayName

未來加入其他登入方式時, 會需要 normalize 不同格式. 儘量使用常見的欄位可以避免未來的麻煩.

id: {{user.id}}
username: {{user.username}}
display name: {{user.displayName}}
user data
{{user}}
新增、刪除、修改資料

新增資料

每個 controller 都內含有 cur 變數, 這個變數被用來作為新增資料前放資料的地方。例如填入留言後按下面的按鈕即會產生新留言.

送出留言
留言列表
{{v.desc}} by {{v.creator.displayName}}

你可以在 cur 中存入任何需要的變數, 但請避開前所提到的基本屬性, 還有 vote, link, stand 等關鍵字.


刪除資料

對你想刪除的資料的 key 呼叫 delete 即可. 上例中的留言列表即有範例.


修改資料

直接將你想改的資料更新, 然後用資料的 key 執行 save 即可. 你可以結合 contenteditable 屬性讓事情變得更容易. 下例讓你修改留言的內容, 試著點留言的文字, 你可以直接做修改. 改完後, 按右方的存檔鈕, 即完成存檔.

- by {{v.creator.username}}
連結資料

資料間可以互相連結, 完全看你怎麼設計. 為了方便建立連結, 這裡提供了一個快速選擇資料的 directive: "chooser". 下面為 chooser 的範例, 試著輸入一些字 (例如 '計畫'), chooser 會將找到的資料以 "type / name" 的形式顯示出來. 當你點選了其中一個資料後, chooser 所連結的 model 會得到該資料的細節, 包含 id, 類型, 跟資料本身


你選擇的資料 id 為 {{chosen.id}}, 類型為 {{chosen.t}}, 標題為 {{chosen.v.name}}, 由 {{chosen.v.creator.username}} 建立.
其內容為 {{chosen.v}}

選取資料以後, 建立連結則使用 "link" 來實作. 下面為一個提案, 帶有一個連結資料按鈕.

提案 "{{v.name}}"
與屬於 {{chosen.t}} 的 {{chosen.v.name}} 建立連結
與此提案有關的資料
{{n.v.name}}

link 函式的第一個參數為連結的分類, 'link' 代表普通連結. 'choice' 代表是選項, 'child' 代表是子項目. 最後一個參數的數字代表連結的方向性, 1 為順向, -1 為反向, 0 為雙向.

你也可以在建立資料時立刻連結資料. 請參考下一個範例的 createWith 函式.

票選與按贊

按讚為任何資料的基本功能, 使用下面的樣板即可.

提案 "{{v.name}}"
{{v.vote[0].length}}
{{v.vote[1].length}}
{{v.vote[2].length}}

就算是留言也可以:

"{{v.desc}}" by {{v.creator.username}}
{{v.vote[0].length}}
{{v.vote[1].length}}
{{v.vote[2].length}}

投票的話稍微複雜些. 先建立好數個類型為 'choice' 的連結後, 利用 picked 函式選出已選及未選的項目, 並用 pick 來選取/取消選取項目. 這裡利用 createWith 來建立連結到提案的方案作為選項.

提案 "{{v.name}}"

建立選項
透過 createWith 建立方案
所有的選項
{{c.v.name}}
你選擇的項目
{{c.v.name}}
沒被選的項目
{{c.v.name}}

個別類型的細節

群組相關
待補完