如果集合为空,则在渲染后不会触发挖空
Knockout does not trigger afterRender if collection is empty
我有一个如下所示的 Knockout 模板,一切都很好,包括在绑定完成后调用的 myFunction 事件处理程序 - 只要 myItems 集合有任何元素。
当视图模型在 myItems 集合中有 0 个元素时,afterRender 似乎不会触发。
<table>
<tbody data-bind="template: { foreach: myItems, afterRender: myFunction }">
<tr>
<td data-bind="text: $someProperty"></td>
</tr>
</tbody>
</table>
在没有数据的情况下,是否有任何其他 Knockout 事件可用于在视图模型进行数据绑定后调用某些逻辑?
我希望能够确定何时呈现模板,无论它是否有任何元素。
谢谢!
我决定简单地修改 AJAX 调用的回调以显式调用 afterRender 事件处理程序(巧妙地命名为 afterRender):
FUNCTIONS.InvoiceList = function(target) {
var self = this;
self.target = target;
self.invoices = ko.observableArray();
self.afterRender = function() {
$('.loading').hide();
};
$.getJSON("http://hostname/api/invoices", function (data) {
self.invoices(data);
// Invoke event handler even when there are no items
if(data.length==0) {
self.afterRender();
}
});
};
模板是集合中项的呈现容器。如果您的集合中没有任何项目,因此没有要渲染的内容,并且不会触发"afterRender" - 这是常识。
您能否指定要在此事件中实现的内容,我尽力提供帮助。
相关文章:
- 如果 a 为 false,则 if(a) === if(false)
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如果文本字段为空,则使用JavaScript应用CSS样式
- Meteor-将选定窗体中的对象添加到集合中
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 如果href包含X,请更改href
- 主干集合重置和解析
- 如果localstorage为空,则显示欢迎消息
- 使用数据上的角度更改设置集合的第一个元素的动画
- 为集合分配大量的模型弹药
- 如果集合为空,则在渲染后不会触发挖空
- AngularJS.什么's指令如果变量不是集合,我需要重复html标记
- 如果集合在MeteorJS中为null或不为null,则显示模板
- 如果找不到,则添加到集合
- 如果在使用IE11时使用了setModel,则不会渲染主干集合
- 主干更新模型(如果集合中已存在)
- 如果存在数组的元素,则从 mongodb 集合中检索项目(meteor js)