我有一個用於查詢產品的視圖模型,與此類似。查詢模板查看模型
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'庫。 –