如何在JsRender中获取for循环中的当前对象

时间:2013-06-20 04:12:32

标签: jquery jsrender

我想将当前设置为值的对象设置为JsRender的for循环中的复选框。以下是我的代码。

{{for data.UserConnection}}
  <li>
    <input name="checkboxlist" class="profilechkbox" type="checkbox" value={{:#view}} /><br />
    <a onclick="stateManager.renderSelectedProfileForInviteGroup({{:#index}})" title="{{:Fullname}}" class="active" href="#" >
      <img  src="{{:userDetails.ImagePath}}" width="40" height="40" /><br />
      {{:Fullname}}
    </a>
  </li>
{{/for}}

我将值设置为{{:#view}}以获取当前对象。但我得到了[object object]。如果我在这里做错了,请纠正我。

3 个答案:

答案 0 :(得分:3)

JsRender中的

#view是当前的数据对象。

通过编写{{:#view}},您试图显示该对象,该对象在浏览器中显示为[object Object]

尝试{{:#view.data.yourattribute}}

答案 1 :(得分:1)

我需要在循环中呈现当前对象的动态命名属性。为此,您可以创建一个函数来在视图模型(对象)中设置当前实例,并通过调用模型中的另一个函数来获取当前实例的动态命名属性的值。请看我的小提琴JsRender Dynamically Named Props。 灵感:John Papa's fiddle

<tbody>
    {{for markets}}  
    {{:~SetInstanceFunc()}}
    <tr>
        <td>{{:id}}</td> <td>{{:market}}</td>
        {{for #parent.parent.data.years}}      
        <td>{{:~GetYearPropFunc('min', #data)}} </td>
        <td>{{:~GetYearPropFunc('max', #data)}} </td>
        {{/for}}
    </tr>
    {{/for}}
</tbody>

这是java脚本:

var vm = {
  years: years, 
  markets:markets,
  instance:{},
  setInstance: function(){
    instance = this.data;
  },
  getYearProp: function(text, year){
    if(!instance) return '';
    return instance[(text + year)] || '';
    }
};
$.views.helpers({
  GetYearPropFunc: vm.getYearProp,
  SetInstanceFunc: vm.setInstance
});

答案 2 :(得分:0)

渲染当前对象:

{{for #data }} 
    {{:attribute1}}
    {{:attribute2}}
    ...
{{/for}}