2017-03-26 114 views
2

我從Polymer 2.0開始,我有一個設計問題,我找不到答案,我希望你能幫助我。聚合物2.0:我應該在哪裏放置業務邏輯?

的一點是,我的工作任務管理系統消耗的外部API(laravel在這種情況下)啓動/停止任務,編輯或創建一個新的等

我無法找到是處理業務特定邏輯的最佳方法,因爲據我所知,聚合物元素應該是可重複使用的,並且將聚合物元素中的api調用和其他功能包括進去似乎並不是最好的解決方案,儘管這是最簡單的。

我有幾種選擇: - 使用頂級JS類的自定義事件來管理所有事件,這些事件使api調用並更新聚合元素。 - 使用mixins從Polymer Element和包含所需方法/邏輯的自定義Task類進行擴展。 - 傳遞給聚合物元素一個Task對象,並將其保存爲一個屬性並通過它調用該方法。

有人能告訴我哪種方法最好嗎?雖然我確信這不會是我說的三個中的任何一個:)

謝謝!

回答

3

有幾個approches

1)使用標籤讀取和修改數據(活DB)

// firebase example 
<firebase-query 
    id="query" 
    app-name="notes" 
    path="/notes/[[uid]]" 
    data="{{data}}"> 
</firebase-query> 

<template is="dom-repeat" items="{{data}}" as="note"> 
    <sticky-note note-data="{{note}}"></sticky-note> 
</template> 

使用此您可以訪問{{數據}}並對其進行修改。所以,如果你刪除一個音符,將在服務器上,所有其他連接的客戶端(你喜歡火力現場分貝獲取功能)會自動刪除 =「看https://www.webcomponents.org/element/firebase/polymerfire/firebase-query

至於我可以告訴你的是將使用PHP來創建一個API的數據權利?所以一個活的分貝是不可能的。所以

2)使用標籤閱讀(修改)數據

也許最好的方式是創建一個數據提供商的東西,你需要 例如

<data-notes notes="{{notes}}"></notes> 
<data-comments comments="{{comments}}" for="[[currentNote]]"></notes> 

因此,您仍然可以輕鬆訪問{{notes}}和{{comments}}。

你如何處理更新取決於你的用例。例如,您可以在數據處理程序中使用changeEvents通過獲取或iron-ajax動態執行api更新。

或者您可以使用表單執行「正常」發佈請求並觸發數據提供程序獲取新數據。

我個人喜歡完全封裝我的數據,所以我不必考慮它。例如。如何以及在何處的數據來自我不關心:P爲數據源

實例:

3)使用類似終極版(用於大量的動態數據)

但請記住,它增加你必須思考的一個「額外」層。

什麼時候應該使用Redux?

在一般情況下,使用終極版當你有合理的數量隨着時間不斷變化,你需要事實的單一源數據 的,你會發現 是接近像一個頂級藏在心裏反應 組件的狀態不再充分。

更=>http://redux.js.org/docs/faq/General.html#general-when-to-use

一個簡單的例子有聚合物: https://tur-nr.github.io/polymer-redux/

相關問題