1

可以说我有一个像这样的视图模型

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 负责绑定 this,因此 Id 可以正确呈现。

4

1 回答 1

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

于 2011-02-14T15:12:33.127 回答