elixir 的頁面調用函數方法

尚不完整 等時間充足了統一整理下

在瞭解elixir項目目錄結構後就知道個大概。
1.頁面下拉框取值數據庫中的值
2.類似於Java 實體類中包含着另一個實體類的功能 在elixir中稱實體類爲模塊。也就是模塊包含這一個子模塊。

先解決問題1,(說實話可能是不熟elixir的原因,有些不習慣。不過真的是非常的方便,好多在Java中的代碼在elixir中都不用寫,是非常方便程序員的。可能也是寫代碼量較少,目前我感覺排錯還太好找到根源。)
首先一般我們寫頁面的下拉框是這樣的:

<div class="form-group row">
   <label for="example-month-input" class="col-2 col-form-label">狀態</label>
   <div class="col-10">
       <select class="custom-select col-12" id="inlineFormCustomSelect">
           <option value="1">One</option>
           <option value="2">Two</option>
           <option value="3">Three</option>
       </select>
   </div>
</div>

而人家elixir的Phoenix的模板可以這樣用:
用了好多<%= %>標籤
重點是調用函數 get_status(),它是定義在 views文件夾中對應你頁面的XXX_views.ex視圖文件
我的舉例:
我修改的project文件夾下的form.html.eex文件中的select標籤
那我的get_status()函數定義在views/project_views.ex中。

  <div class="form-group  <%= get_input_class(@changeset, :status) %>">
    <%= label f, "狀態", class: "form-control-label" %>
    <%= select f, :status, get_status(), class: "form-control" %>
    <%= error_tag f, :status %>
  </div>

get_status()實現代碼:
直接返回兩個字符串。你要問我 Project.System.Dict.ps_in_progress()這個是啥在那定義的,我只會說我不知道。

  def get_status do
    [{"項目進行中", Project.System.Dict.ps_in_progress()}, {"項目已完成", Project.System.Dict.ps_finished()}]
  end

如果你想去查詢數據庫中的某表信息在返回回來就這樣寫:

#類似Java的導包功能
#alias Project.Base.project 這個是直接指定到哪個模塊了。下面是定義的是在Base的文件夾下所有的文件中匹配的函數(同名的)
alias Project.Base
def phases do
    Base.list_phases()
    |> Enum.map(&{&1.name, &1.id})
  end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章