Forms 根据表单中按下的按钮,knockout.js和submit binding具有不同的功能

Forms 根据表单中按下的按钮,knockout.js和submit binding具有不同的功能,forms,knockout.js,Forms,Knockout.js,我想有一个保存和保存(添加另一个)按钮。第一个按钮保存项目,但保留在同一项目上,另一个按钮保存项目,但显示相同的模板以添加新项目。保存(添加另一个)按钮用于节省时间。如何让knockout.js中的submit绑定处理这两个不同的实例 <form class="box clearfix" action="@Request.RawUrl" data-bind="submit: save"> @Html.Partial("EditorTemplates/Division", Mo

我想有一个保存和保存(添加另一个)按钮。第一个按钮保存项目,但保留在同一项目上,另一个按钮保存项目,但显示相同的模板以添加新项目。保存(添加另一个)按钮用于节省时间。如何让knockout.js中的submit绑定处理这两个不同的实例

<form class="box clearfix" action="@Request.RawUrl" data-bind="submit: save">
    @Html.Partial("EditorTemplates/Division", Model.Division)
    <div class="control-group">
        <div class="controls">
            <button type="submit" class="btn btn-inverse">
                <i class="icon-save icon-white"></i> Save</button>
            <!-- <button type="submit" class="btn btn-inverse">
                <i class="icon-save icon-white"></i> Save (Add Another)</button> -->
        </div>
    </div>
</form>

@Html.Partial(“EditorTemplates/Division”,Model.Division)
拯救
检查这把小提琴-

基本上,这将使用click绑定而不是submit绑定。它只是让您的第二个按钮调用视图模型中的第一个按钮,然后重新调用AddPerson对象

    self.addPerson = function () {
        self.newModel(new personModel(""));
        self.isAddingNew(true);
    };

    self.save = function (person) {
        self.persons.push(person);
        self.isAddingNew(false);
    };

    self.saveAndAdd = function (person) {
        self.save(person);
        self.addPerson();
    };
如果您死心塌地地使用提交绑定,只需传递一个附加参数

<button data-bind="submit: function(data, event) { save(false, data, event) }">
    Submit
</button>

<button data-bind="submit: function(data, event) { save(true, data, event) }">
    Submit and Add Another Person
</button>
检查这把小提琴-

基本上,这将使用click绑定而不是submit绑定。它只是让您的第二个按钮调用视图模型中的第一个按钮,然后重新调用AddPerson对象

    self.addPerson = function () {
        self.newModel(new personModel(""));
        self.isAddingNew(true);
    };

    self.save = function (person) {
        self.persons.push(person);
        self.isAddingNew(false);
    };

    self.saveAndAdd = function (person) {
        self.save(person);
        self.addPerson();
    };
如果您死心塌地地使用提交绑定,只需传递一个附加参数

<button data-bind="submit: function(data, event) { save(false, data, event) }">
    Submit
</button>

<button data-bind="submit: function(data, event) { save(true, data, event) }">
    Submit and Add Another Person
</button>

你能显示你当前正在做什么吗?你能显示你当前正在做什么吗?看起来我们的思路是正确的,但我需要两个按钮在同一个表单中。阅读我刚才添加的第二部分-如果你想将其绑定到提交,你可以用与单击相同的方式来做,只需添加一个附加参数,如列表所示。你需要在你的应用程序中进行更深入的测试,但是如果你愿意,我可以在小提琴上添加一个例子,说明如何让两个按钮具有相同的功能但参数不同,请告诉我。是的,我没有从你的代码中看到,因此可能需要小提琴。我知道如何向函数发送附加参数,也知道如何在上下文中使用提交绑定在同一表单中的两个按钮进行发送。看看我上面的例子,在看了你想做的事情之后,你似乎想把表单发回,然后检查点击了哪个按钮,而不是抓住表单发帖并让它显示出来。你想过那样做吗?这可能是最简单、最快的方法。这可能是最好的方法,而不是像我这样过度设计。让我试试这个。我也贴了这个。看起来我们的思路是正确的,但我需要在同一个表单中使用两个按钮。请阅读我刚才添加的第二部分-如果您想将其绑定到提交,您可以使用与单击相同的方法,只需添加一个附加参数,如列表。你需要在你的应用程序中进行更深入的测试,但是如果你愿意,我可以在小提琴上添加一个例子,说明如何让两个按钮具有相同的功能但参数不同,请告诉我。是的,我没有从你的代码中看到,因此可能需要小提琴。我知道如何向函数发送附加参数,也知道如何在上下文中使用提交绑定在同一表单中的两个按钮进行发送。看看我上面的例子,在看了你想做的事情之后,你似乎想把表单发回,然后检查点击了哪个按钮,而不是抓住表单发帖并让它显示出来。你想过那样做吗?这可能是最简单、最快的方法。这可能是最好的方法,而不是像我这样过度设计。让我试试这个。我也贴了这个。