如何将额外的变量和参数传递给jQote2?

时间:2011-11-09 16:12:16

标签: variables parameters jqote

我有几个Javascript函数可以连接我设置为变量 c 的网址。然后我尝试将该变量传递给jQote2:

$.get("emptyReq.tpl", function(tmpl,c) {
  $("#reqs").jqoteapp(tmpl, result, c);
});

在emptyReq.tmpl中,我正在执行以下操作:

<tr id="row">
  <td name="id" class="id"><a href="<%=this.c%>"><%= this.FormattedID %></a></td>
  <td name="name" class="name"><%= this._refObjectName %></td>
  <td name="state" class="state"><%= this.ScheduleState %></td>
  <td name="owner" class="owner"></td>
</tr>

我尝试了几种变体(this.c和c),我也尝试了不同的变量,但是我无法正确显示URL。

c 在控制台中标记为未定义,并且网址最终类似于:http://127.0.0.1/xampp/py2/undefined而不是实际的 c ,类似于{ {3}}

有没有办法正确传递参数?或者我应该在.tmpl文件中进行连接?

以下是我作为参考使用的内容:https://rally1.rallydev.com/slm/rally.sp#/2735190513d/detail/userstory/4599269614

1 个答案:

答案 0 :(得分:0)

rishimaharaj,

jqoteapp方法的第三个参数用于在每次调用的基础上更改模板标记(默认情况下为<% ... %>)。如果您需要将其他数据传递到模板,您有两种选择:

  1. 使c成为一个全局变量(我不建议这样做)
  2. c的值复制到data参数(推荐):

    请注意,复制需要考虑您的类型 模板化数据,即处理单个对象与数组不同 物体!

    $.get("emptyReq.tpl", function(tmpl,c) {
        var data;
    
        // 'result' seems to be a global var, thus making a copy is a good idea.
        // Copying needs to take into account the type of 'result'
    
        if ( Object.prototype.toString(result) === '[object Array]' ) {
            data = result.slice(0);
        } else {
            data = [$.extend({}, result)];
        }
    
        // Now it is safe to add 'c' to the wrapping array. This way
        // we won't override any homonymous property
        data.c = c;
    
        // Call the processing with our local copy
        $("#reqs").jqoteapp(tmpl, data);
    });
    

    一旦你改变了这一点,你就可以通过模板访问c lamda的固有属性data

    <tr id="row">
        ... <a href="<%= data.c %>"><%= this.FormattedID ...
    </tr>
    
  3. 的问候,
    aefxx