Javascript 淘汰ObservalArray不使用多个视图模型更新
我在一个主视图模型中包含多个视图模型。我正在尝试从viewmodel B向viewmodel A中的数组中插入一个项。在我的日志中,我看到该项被添加到数组中,但它没有更新UI ---HTMLJavascript 淘汰ObservalArray不使用多个视图模型更新,javascript,knockout.js,Javascript,Knockout.js,我在一个主视图模型中包含多个视图模型。我正在尝试从viewmodel B向viewmodel A中的数组中插入一个项。在我的日志中,我看到该项被添加到数组中,但它没有更新UI ---HTML <form data-bind="submit: RolesVM.addRole"> <select name="app" data-bind="options:ApplicationsVM.applications,optionsText:'name', value: R
<form data-bind="submit: RolesVM.addRole">
<select name="app" data-bind="options:ApplicationsVM.applications,optionsText:'name', value: RolesVM.application"><option></option></select></td>
<input data-bind='value: RolesVM.role, valueUpdate: "afterkeydown"'/>
<button>Add Role</button>
</form>
<ul data-bind="foreach: ApplicationsVM.applications">
<span data-bind="text:name"></span>
<ul data-bind="foreach: roles">
<li data-bind="text:name"></li>
</ul>
</ul>
您将希望直接调用ObservalArray上的push,而不是底层数组。这是通知任何订阅者它已更改的内容。因此,您希望执行以下操作:
self.application().roles.push(self.role());
而不是:
self.application().roles().push(self.role());
您将希望直接调用ObservalArray上的push,而不是底层数组。这是通知任何订阅者它已更改的内容。因此,您希望执行以下操作:
self.application().roles.push(self.role());
而不是:
self.application().roles().push(self.role());
这会更新我的UI,但无论我键入什么,项目都会作为“结果”返回。啊,我需要将其设置为角色,而不仅仅是名称的字符串值。。var role=新角色self.role;self.application.roles.pushrole;这是一个重要的一点,感谢帮助解决我的问题!我删除了这个问题,它解决了。我像这样使用ko.utils.arrayPushAllarr,itemModels;这会更新我的UI,但无论我键入什么,项目都会作为“结果”返回。啊,我需要将其设置为角色,而不仅仅是名称的字符串值。。var role=新角色self.role;self.application.roles.pushrole;这是一个重要的一点,感谢帮助解决我的问题!我删除了这个问题,它解决了。我像这样使用ko.utils.arrayPushAllarr,itemModels;