KnockoutJS设置输入值

时间:2016-05-04 15:30:59

标签: knockout.js

我试图在运行ajax函数后清除input中的值。我使用的是一个简单的函数:$('input[name=foo]').val('')。输入清除但按钮(根据输入中的字符数启用或禁用)不会再次禁用:

JS:

function viewModel(){
  var self = this;

  //input
  self.foo = ko.observable("");
  self.eightChars = ko.pureComputed(function(){
    return self.foo().length > 7;       
  });  

  //button
  self.enable = ko.observable("");
  self.enableOk = ko.pureComputed(function(){
    return self.eightChars();       
  });  
};
ko.applyBindings(viewModel); 

HTML:

<input type='text' name='foo' placeholder='Foo' autocomplete='off' data-bind='textInput:foo'>
<button type="button" data-bind='enable:self.enableOk()'>Save</button>

2 个答案:

答案 0 :(得分:2)

Knockout textInput绑定是一种双向绑定,因此要清除输入的值,请清除它所绑定的可观察的敲门声。

所以它很简单:

self.foo('');

答案 1 :(得分:1)

如果在触发change事件后通知observable,那么尝试更改这样的值:

$('input[name=foo]').val('').change();
  

您可以直接设置observable的值而不是输入val,但是您需要正确的范围才能执行此操作。

self.foo('');
  

注意:某些开发人员使用您的方法访问DOM元素以将其清除为变通方法。所以最好的方法是使用observable属性,因为MVVM就是这样做的。