我的任务是为链接动态形成“href”,每次更改附加的可观察对象时。这是一个示例的链接: JS Fiddle 示例链接
实现这一目标时我遇到了两个问题:
当我尝试传递一些字符串 + 计算的 observable 时,我得到计算函数列表,而不是它的值。
<a data-bind="attr: {href : '#someHash/' + getHref(10)}">Link</a>
链接看起来像:
http://fiddle.jshell.net/3DAfQ/1/show/#someHash/function h(){if(0<arguments.length)return"function"===typeof v?v.apply(d,arguments):j(Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.")),this;n||g();b.r.Wa(h);return l}
我发现这甚至不合适。
其次,当我尝试更改可观察的、计算的依赖时,链接不会改变。
<a href="#" data-bind="click: changeStoreHref(20)">change Link</a> self.changeStoreHref = function(num) { self.storeHref(num); };
这是HTML代码:
<a data-bind="attr: {href : '#someHash/' + getHref(10)}">Link</a>
<a href="#" data-bind="click: changeStoreHref(20)">change Link</a>
和淘汰赛:
function viewModel()
{
var self = this;
self.storeHref = ko.observable('ten');
self.getHref = function(id)
{
return ko.computed({
read: function()
{
self.storeHref(id);
return self.storeHref();
}
});
};
self.changeStoreHref = function(num)
{
self.storeHref(num);
};
}
ko.applyBindings(new viewModel());
我提醒一下,您可以在以下链接上查看此示例:JS Fiddle 示例链接 谢谢。