使用knockout更新href查询参数

时间:2015-05-18 11:14:37

标签: javascript jquery knockout.js

我有一些带有查询参数的URL,如下所示。我需要使用视图模型(Knockout)替换查询参数的值。

<http://localhost:85/Default.aspx?FormName=Default&ControlNameAndValue={Control1,Control_Value},{Control2,Control2_Value}#/Default.aspx>

在abovelink中我需要替换&#34; Control1_Value&#34;使用&#34; param1&#34;和&#34; Control2_Value&#34;用&#34; param2&#34;从下面的ViewModel属性

var FormDetailsViewModel{
param1: ko.Observable("XYZ"),
param2: ko.Observable("ABC")
} 

我尝试了以下网址,但没有工作,我因错误绑定而收到错误。

"<http://localhost:85/Default.aspx?FormName=Default&ControlNameAndValue={Control1," + FormDetailsViewModel.param1() + "},{Control2," + FormDetailsViewModel.param2() + "}#/Default.aspx>"

不确定我在上面的href中做了什么错误,或者是否有其他方法可以使用knockout实现此目的?

1 个答案:

答案 0 :(得分:2)

我建议你的viewmodel中有一个observable,它通过ko.computed返回完整的,构造的URL:

var FormDetailsViewModel = {
  param1: ko.observable("foo"),
  param2: ko.observable("bar"),
  url: ko.computed(function() {
    return "http://localhost:85/Default.aspx?FormName=Default&ControlNameAndValue={Control1," + this.param1() + "},{Control2," + this.param2() + "}#/Default.aspx";
  })
}

并使用attr绑定来设置href:

<a data-bind="attr: { href: url }">My link</a>