0

我正在尝试将一个临时/上下文变量存储在一个 for 循环中,以便以后在另一个 for 循环中使用。我使用http://borismoore.github.io/jsrender/demos/step-by-step/11_accessing-parent-data.html作为参考。

{^{for instances ~templateId=templateId}}
    {{:~templateId}}
    <select data-link="templateId" class="selected-visible" name="select-template">
        {^{for ~root.templates}}
            <option data-link="{:name} value{:id} selected{:id == ~templateId}"></option>
        {{/for}}
    </select>
{{/for}}

实例数组中的每个数据对象都有一个设置为特定值的 templateId 属性,并且模板数组中的每个对象都有一个 id 属性。

第一个问题是我的调试 {{:~templateId}} 没有出现。似乎没有分配变量。

仅在模板标记中使用 ~helper 集后,我尝试在我的“viewmodel”中明确定义助手

$.views.helpers({templateId: 0});

现在,当我没有在 for 循环中设置它时,值会被打印出来,但是当我在 for 循环中设置它时,它会再次消失。

下一个问题可能是 ~templateId 助手在 ~root 范围的 for 循环中不可用,因为助手应该只在实例循环的子视图中可用?

最终目标是在select中选择正确的值,所以如果有其他解决方案,请告诉。

4

1 回答 1

0

您需要~templateId=templateId从模板中删除...

解释:

该语法~helper用于访问帮助程序/上下文参数,可以外部传入/注册,如此处所示http://www.jsviews.com/#helpers可以在模板中创建/设置,如您链接到的示例{{for movies ~theater=theater}},或在此示例中::http ~frstNm=firstName: //www.jsviews.com/#samples/jsr/paths

所以通常你要么传入一个助手,要么在模板中创建它——而不是两者兼而有之。

在上面的示例中,您首先传入~templateId- as 0- 然后将其重新定义为上下文参数,使用~templateId=templateId(实际上是将其值设置为undefined,因为...=templateId将其设置为当前数据的templateId属性的值 - undefined,在你的情况下)。

于 2015-08-26T17:38:57.850 回答