elixir 的页面调用函数方法

xiaoxiao2021-03-01  12

尚不完整 等时间充足了统一整理下

在了解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
转载请注明原文地址: https://www.6miu.com/read-3100194.html

最新回复(0)