我有一个简单的视图模型:
<input data-bind="value: url">
<a id=url-host data-bind="attr: { href: url }"></a>
<div data-bind="visible: isValidUrl">
This is not a valid URL
</div>
function () {
var self = this;
self.url = ko.observable();
self.isValidUrl = ko.computed(function () {
return !!$("#url-host").get(0).protocol;
});
}
我遇到的问题是isValidUrl
输入更改时似乎没有触发。我可以通过在函数self.url()
内添加任何位置来解决此问题。ko.computed
似乎ko.computed
只有在它包含对可观察对象的调用时才会触发,这实际上是有道理的。
但是,通过添加self.url()
到上面的代码中,$("#url-host")
href
属性实际上仍然是undefined
. 这意味着在set 绑定之前isValidUrl
发生。我的问题是双重的:attr
- 如何确保在计算函数运行之前
attr
设置该值?isValidUrl
- 看起来
isValidUrl
应该取决于attr
绑定的完成而不是值。有没有合适的方法来做到这一点?