JsViews数据链接辅助函数

时间:2015-11-01 18:50:42

标签: jsviews

我定义了以下助手:

$.views.helpers({
    total: function(lines) {
        var total = 0;

        for (var i = 0; i < lines.length; i++) {
            total += lines[i].price * lines[i].quantity;
        }

        return total;
    }
});

然后我有以下代码将我的模型数据链接到我的视图:

var model = {
    lines: []
};

$("#lines").link(true, model);

最后在视图中我有以下内容:

<span data-link="~total(lines)"></span>

但是每当我从数组中观察到添加或删除项目时,它都不会更新总数。我读到你可以将lines.length传递给函数,实际上每次添加或删除项目时它都会更新总数。但是,当我对任何一行显示更新数量属性时,总数没有更新。

如果有人能告诉我怎么做,我会很感激。

由于

2 个答案:

答案 0 :(得分:0)

我发现以下问题有几个建议的修复方法:

https://github.com/BorisMoore/jsviews/issues/280

不幸的是,两者都是黑客攻击,但我想现在必须这样做。

答案 1 :(得分:0)

是的,正如您在https://github.com/BorisMoore/jsviews/issues/280中找到的那样,目前没有依赖于&#34; All&#34;的声明性语法。可能在V1.0之后添加该功能 - 沿着total.depends = "lines**";total.depends = "lines*.*";的行添加帮助:function total(...) ...

同时你可以使用程序化方法 - 这仍然很容易。只需添加以下内容即可触发刷新:

$.observable(model.lines).observeAll(function() {
    $("#lines").link(true, model);
})

或只刷新&#39;总计&#39;通过写作:

<span id="total" data-link="~total(lines)"></span>

$.observable(model.lines).observeAll(function() {
    $("#total").link(true, model);
})

例如参见:http://jsfiddle.net/BorisMoore/wch601L9/