假设我有一个像这样的视图模型
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,以便包含模板将其作为模板处理;换句话说,如何将viewmodel中的字符串转换为模板中的模板。
<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 :(得分: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/
否则,由于您正在使用knockout,您可以考虑在您的数组中的每个项目上使EditUrl成为dependentObservable。然后,您实际上可以绑定到EditUrl。与上面几乎相同,只是函数将在数组中的每个项目上。让我知道,我也可以向你展示一个例子。