DWZ (JUI)表格Table单击选中功能扩展

原本DWZ框架提供的单选功能是单击选中表单上某一记录,点击设置好a标签按钮,URL自动加上记录Id并执行URL,打开新窗口或者ajax提交,可实现对该条记录的更新(删除、修改)。这些功能已经很强大了,但是实际项目还会有更复杂的操作,而不单单是url的请求执行,所以本人就对单击选中功能做了扩展。
先介绍原有的功能,为理解接下来的新扩展提供理论基础。
原有功能html端表现:

//a标签按钮,{xxx_id}大括号里的名称是与表单的tr标签属性target的值是一致的
//表单的tr标签属性rel的值就是该行记录的ID值,也就是{xxx_id}所代表的值
<div class="panelBar">
    <ul class="toolBar">
    <li class="">
    //target="navTab"即打开新的页签,target="dialog"即弹出小窗口,title的值为窗口或页签的名
    //target="ajaxTodo"即ajax提交,title的值为确认执行的弹框提示内容
    <a class="edit" href="xxx/xxx?id={xxx_id}" target="navTab" title="xx">
    <span>修改</span>
    </a>
    </li>
    </ul>
</div>
//可单选的表单
<table >
...
<tbody>
    <tr target="xxx_id" rel="1" >
    <td >xxx</td>...
    </tr>           
</tbody>
</table >

原有功能javascript端表现:

//dwz.ui.js文件在大概265行到280行(这边有改动,所以是大概位置)
// navTab
    $("a[target=navTab]", $p).each(function(){
        $(this).click(function(event){
            var $this = $(this);
            var title = $this.attr("title") || $this.text();
            var tabid = $this.attr("rel") || "_blank";
            var fresh = eval($this.attr("fresh") || "true");
            var external = eval($this.attr("external") || "false");
            var url = unescape($this.attr("href")).replaceTmById($(event.target).parents(".unitBox:first"));
            DWZ.debug(url);
            if (!url.isFinishedTm()) {
                alertMsg.error($this.attr("warn") || DWZ.msg("alertSelectMsg"));
                return false;
            }
            navTab.openTab(tabid, url,{title:title, fresh:fresh, external:external});
            event.preventDefault();
        });
    });

以上是原有target=”navTab”打开新的页签的功能全部,本人就是以这个为参照,做出更灵活的扩展功能。
以下就是具体实现:
在dwz.ui.js里navTab实现方法之后加如下jq代码(即initUI(_box)方法里):

//新的单击选中功能,是自定义target="editOne",并在a标签里自定义属性editOne="youfunc()"实现的
// clickOne
    $("a[target=editOne]", $p).each(function(){
        $(this).click(function(event){
            var $this = $(this);
            var title = $this.attr("title") || $this.text();
            //获取editOne属性的值即自定义的js函数
            var url = unescape($this.attr("editOne")).replaceTmById($(event.target).parents(".unitBox:first"));
            DWZ.debug(url);
            if (!url.isFinishedTm()) {
                alertMsg.error($this.attr("warn") || DWZ.msg("alertSelectMsg"));
                return false;
            }
            //执行自定义的js函数
            eval(url);
            event.preventDefault();
        });
    });

html的扩展实现:

<a class="edit" editOne="youfunc({xxx_id})" target="editOne"><span>XXX</span></a>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的GRU神经网络的MATLAB实现示例: ```matlab % GRU神经网络实现 % 参考:https://github.com/crazydonkey200/neural-networks-for-nlp/blob/master/gru.m classdef GRUNetwork < handle properties input_dim hidden_dim output_dim Wz Wr Wh Uz Ur Uh bz br bh end methods function obj = GRUNetwork(input_dim, hidden_dim, output_dim) obj.input_dim = input_dim; obj.hidden_dim = hidden_dim; obj.output_dim = output_dim; obj.Wz = rand(hidden_dim, input_dim); obj.Wr = rand(hidden_dim, input_dim); obj.Wh = rand(hidden_dim, input_dim); obj.Uz = rand(hidden_dim, hidden_dim); obj.Ur = rand(hidden_dim, hidden_dim); obj.Uh = rand(hidden_dim, hidden_dim); obj.bz = zeros(hidden_dim, 1); obj.br = zeros(hidden_dim, 1); obj.bh = zeros(hidden_dim, 1); end function [h, y] = forward(obj, x) T = size(x, 2); h = zeros(obj.hidden_dim, T); z = zeros(obj.hidden_dim, T); r = zeros(obj.hidden_dim, T); y = zeros(obj.output_dim, T); h(:, 1) = zeros(obj.hidden_dim, 1); for t = 1:T z(:, t) = sigmoid(obj.Wz * x(:, t) + obj.Uz * h(:, t) + obj.bz); r(:, t) = sigmoid(obj.Wr * x(:, t) + obj.Ur * h(:, t) + obj.br); h_tilde = tanh(obj.Wh * x(:, t) + obj.Uh * (r(:, t) .* h(:, t)) + obj.bh); h(:, t + 1) = (1 - z(:, t)) .* h(:, t) + z(:, t) .* h_tilde; y(:, t) = softmax(h(:, t + 1)); end h = h(:, 2:end); end function [dWz, dWr, dWh, dUz, dUr, dUh, dbz, dbr, dbh] = backward(obj, x, y_true, y_pred, h) T = size(x, 2); dWz = zeros(size(obj.Wz)); dWr = zeros(size(obj.Wr)); dWh = zeros(size(obj.Wh)); dUz = zeros(size(obj.Uz)); dUr = zeros(size(obj.Ur)); dUh = zeros(size(obj.Uh)); dbz = zeros(size(obj.bz)); dbr = zeros(size(obj.br)); dbh = zeros(size(obj.bh)); dz = zeros(obj.hidden_dim, T); dr = zeros(obj.hidden_dim, T); dh_tilde = zeros(obj.hidden_dim, T); dh = zeros(obj.hidden_dim, T + 1); dy = y_pred - y_true; dh(:, end) = zeros(obj.hidden_dim, 1); for t = T:-1:1 dh(:, t) = (1 - z(:, t)) .* dh(:, t + 1); dh_tilde(:, t) = z(:, t) .* dy(:, t) .* (1 - tanh(obj.Wh * x(:, t) + obj.Uh * (r(:, t) .* h(:, t)) + obj.bh) .^ 2); dz(:, t) = (h_tilde(:, t) - h(:, t)) .* h(:, t + 1) .* z(:, t) .* (1 - z(:, t)); dr(:, t) = sum(obj.Uh' * dh_tilde(:, t) .* h(:, t + 1) .* z(:, t) .* (1 - r(:, t)), 2); dh(:, t) = dh(:, t) + obj.Uh' * dh_tilde(:, t) .* r(:, t) .* (1 - h(:, t + 1) .^ 2); dbz = dbz + dz(:, t); dbr = dbr + dr(:, t); dbh = dbh + sum(dh_tilde(:, t), 2); dWz = dWz + dz(:, t) * x(:, t)'; dWr = dWr + dr(:, t) * x(:, t)'; dWh = dWh + dh_tilde(:, t) * (r(:, t) .* h(:, t))'; dUz = dUz + dz(:, t) * h(:, t)'; dUr = dUr + dr(:, t) * h(:, t)'; dUh = dUh + dh_tilde(:, t) * (r(:, t) .* h(:, t - 1))'; end end function update(obj, dWz, dWr, dWh, dUz, dUr, dUh, dbz, dbr, dbh, lr) obj.Wz = obj.Wz - lr * dWz; obj.Wr = obj.Wr - lr * dWr; obj.Wh = obj.Wh - lr * dWh; obj.Uz = obj.Uz - lr * dUz; obj.Ur = obj.Ur - lr * dUr; obj.Uh = obj.Uh - lr * dUh; obj.bz = obj.bz - lr * dbz; obj.br = obj.br - lr * dbr; obj.bh = obj.bh - lr * dbh; end end end function sigm = sigmoid(x) sigm = 1 ./ (1 + exp(-x)); end function sm = softmax(x) ex = exp(x); sm = ex / sum(ex); end ``` 这个实现包括前向和后向传播以及模型参数的更新。你可以使用`GRUNetwork`类来实例化GRU网络并进行训练和测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DataVault善战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值