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);
})
我定义了以下助手:
$.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);
})