2011-02-14 58 views
1

模板可以说我有这样的jQuery的:从字符串问题

var viewModel = { 
    "Dtos": [{ 
     "Id": 1, 
     "Number": 100, 
     "Description": "some description", 
     "Total": 200}, 
    { 
     "Id": 2, 
     "Number": 200, 
     "Description": "some description", 
     "Total": 400}] 
}; 

viewModel.EditUrl = "http://someUrl.com?Id=${Id}"; 

我怎样才能使EditUrl在以下模板视图模型,使得包含模板处理它为模板;换句话说,我该如何将视图模型中的字符串转换为模板中的模板。

<script id="rowTemplate" type="text/x-jquery-tmpl"> 
    <tr> 
     <td><a href="${EditUrl}">Edit</a></td> 
      <td>${Id}</td> 
    </tr> 
</script> 

Knockout.js负责绑定这个,所以Id正确渲染。

回答

0

你怎么样让viewModel.EditUrl的功能,如:

viewModel.EditUrl = function(id) { return "http://someUrl.com?Id=" + id; } 

然后,你的模板看起来像:

<script id="rowTemplate" type="text/x-jquery-tmpl"> 
    <tr> 
     <td><a href="${viewModel.EditUrl(Id)}">Edit</a></td> 
      <td>${Id}</td> 
    </tr> 
</script> 

像:http://jsfiddle.net/rniemeyer/CegbS/

否则,因为你正在使用淘汰赛,你可以考虑让EditUrl成为数组中每个项目的dependentObservable。然后,你可以实际绑定到EditUrl。与上面几乎相同,只是函数将在数组中的每个项目上。让我知道,我也可以向你展示一个例子。

+0

@RP尼迈耶:酷,功能会的工作,但我宁愿使用可观察到的。你可以发布这个例子吗? – epitka 2011-02-14 15:27:42