我有一个用于查询产品的视图模型,与此类似。查询模板查看模型
function ProductQueryModel() {
this.publishedSince = ko.observable();
this.nameContains = ko.observable();
...
this.SubmitQuery = function() {
// what shall I do? ...
}
}
现在我创建一个template
这个视图模型,让我可以重新使用在应用程序。
<template id="productquerymodel-template">
<form>
...
<input type="text" data-bind="textInput: nameContains"/>
...
<button type="submit" data-bind="click: SubmitQuery">Submit</button>
</form>
</template>
我故意没有使用submit
结合,因为在大多数情况下,我想只在点击按钮FRM提交防止例如意外提交。
在这里,我提交表单时出现问题。绑定到提交按钮的click
事件的方法在查询模型内部没有意义,因为查询模型本身不知道如何处理当查询。它应该是以外的查询视图模型,因为方法实现取决于使用查询模型的确切内容。
但另一方面,在模板中包含提交按钮是有意义的,因为它是表单的一部分。
一个方法是定义click
的template
像$parent.SubmitQuery.bind($parent)
内结合,但我会限制模板的消费者总是在查询模型的父母,这是不是一个很好的定义SubmitQuery
功能我认为解决方案。
有没有人知道这样的scnearios现有的做法,或任何其他想法可能有助于在这些情况下?
就像一个更新,还有另外一个替代的解决方案,以这些类型的问题,使用发布/订阅模式,例如'knockout-postbox'库。 –