JsViews Data-Link 辅助函数

JsViews Data-Link Helper Function

我定义了以下助手:

$.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;
    }
});

然后我有以下代码将数据 link 我的模型显示在我的视图中:

var model = {
    lines: []
};

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

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

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

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

如果有人能告诉我如何做到这一点,我将不胜感激。

谢谢

我发现了以下问题,其中包含一些修复建议:

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

不幸的是,两者都有点困难,但我想现在必须这样做。

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

同时您可以使用编程方法 - 这仍然非常简单。只需添加以下内容即可触发刷新:

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

或通过写入仅刷新 'total' 范围:

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

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

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