我想在用户单击按钮并且服务器正在处理某些数据时使用knockout.js禁用按钮.我正在看淘汰教程中的例子,但似乎缺少一些东西.
我enable:参与其中data-bind:
<body>
<form id="form1" runat="server" >
<h1 style="text-align: center">Select the item(s) you want.</h1>
<br />
<br />
<div id="buttons" style="text-align: center">
<button data-inline="true" data-bind="click: submit, enable: canSubmit" >Submit</button>
<button data-inline="true" data-bind="click: cancel">Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)
我在视图模型中将observable设置为false.但是,初始化视图时,页面上会启用该按钮.所以我认为这是一个数据绑定问题.
function ViewModel() {
var self = this;
self.selectedItems = ko.observableArray([]);
// we should start off not being able to click the submit button
self.canSubmit = ko.observable(false);
};
Run Code Online (Sandbox Code Playgroud)
我希望启用该按钮,直到用户单击提交按钮,然后禁用它,直到服务器完成它为止.
self.submit = function () {
// disable submit button
self.canSubmit = false;
// do stuff
self.canSubmit = true;
};
Run Code Online (Sandbox Code Playgroud)
如何将enable可观察值绑定到按钮?
你错误地用直接的js变量替换你的observable.canSubmit是一个可观察的,所以通过调用函数来改变它的值:
self.submit = function () {
// disable submit button
self.canSubmit(false);
// do stuff
self.canSubmit(true);
};
Run Code Online (Sandbox Code Playgroud)
其余的都很好.
您不是在更新可观察的值,而是在更改self.canSubmit的引用,因此它指向一个布尔值。
将您的self.submit函数更改为:
self.submit = function () {
// disable submit button
self.canSubmit(false);
// do stuff
self.canSubmit(true);
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11596 次 |
| 最近记录: |