jQuery:来自字符串问题的模板

时间:2011-02-14 13:52:19

标签: jquery jquery-templates

假设我有一个像这样的视图模型

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呈现正确。

1 个答案:

答案 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。与上面几乎相同,只是函数将在数组中的每个项目上。让我知道,我也可以向你展示一个例子。