【发布时间】:2016-07-03 22:40:26
【问题描述】:
我正在尝试制作一个弹出框,它有一个 html 表单和一个类型为“提交”的按钮。这个弹出框也绑定到了 knockout.js。
当我点击弹出框上的按钮时,它不会触发 KO 功能,而是发出标准的 post 请求。
如果我将表单移到弹出框之外,它可以正常工作。
如何在弹出窗口中创建 html 表单并使用提交按钮触发我的模型的功能?
<a href="#" id="createTaskPopover" data-toggle="popover" data-placement="right" title="Create Task">Click me!!!</a>
<div id="createTaskPopoverContent" class="hide">
<form data-bind="submit: AddTask">
<input type="hidden" id="FeatureId" name="FeatureId" value="" />
<span>Name</span>
<input type="text" id="Name" name="Name" style="width:100%;" /><br />
<br />
<button id="btnCreateNewTask" type="submit" class="btn btn-info">Create</button>
<br />
</form>
</div>
$('#createTaskPopover').popover({
container: 'body',
html: 'true',
content: function () {
return $("#createTaskPopoverContent").html();
}
});
function VM() {
var self = this;
self.AddTask = function (formElement) {
console.log(formElement);
}
}
var projectVM = new VM();
ko.applyBindings(projectVM);
【问题讨论】:
-
您可能有兴趣查看 knockstrap,它有助于弥合 Bootstrap 和 Knockout 之间的差距。它有一个 specific binding 用于弹出框。
-
我想,应该有办法,不用任何扩展。这不是我遇到的罕见问题。
-
哦,是的 - 这当然不是你问题的答案,但知道这些东西有时存在会很方便 :) 看看你的具体问题,我认为这是因为你正在动态返回使用
.html()弹出窗口,因此此时它失去了submit绑定。虽然我还没有解决方法......
标签: twitter-bootstrap knockout.js popover