0

我有这个问题。我从 Tornado 中获取数据向量。这个向量是“用户”。我有这个块

{% if users %}
{% for user in users %}
            <form name="form_user_{{ user.id }}" method="post" action="/networks/{{ net.id }}/rights">
              <tr>
                <td>
                  <div>
                    {{ escape(user.name) }}
                    <input type='hidden' name="id" value='{{ user.id }}'>
                  </div>
                </td>
                <td>

                  <label class="radio inline" onclick="document.forms['form_user_{{ user.id }}'].submit();">
                    <input type="radio" name="optionsRadios" id="optionsRadios1" value="0">
                    None
                  </label>
                  <label class="radio inline" onclick="document.forms['form_user_{{ user.id }}'].submit();">
                    <input type="radio" name="optionsRadios" id="optionsRadios2" value="1">
                    Read
                  </label>
                  <label class="radio inline" onclick="document.forms['form_user_{{ user.id }}'].submit();">
                    <input type="radio" name="optionsRadios" id="optionsRadios3" value="4">
                    Read + Commands
                  </label>



                  {{ xsrf_form_html() }}
                </td>

              </tr>
            </form>
            {% end %}
          {% end %}

现在我有一个这样的js函数:

$(document).ready(function(){
    //function check(){

    {% if users %}
      {% if user.perm == 1 %}

      $('input:radio[name=optionsRadios]:nth(1)').attr('checked',true);
      //$('input:radio[name=sex]')[1].checked = true;

      {% elif user.perm == 4 %}  

      $('input:radio[name=optionsRadios]:nth(2)').attr('checked',true);
      //$('input:radio[name=sex]')[2].checked = true;

      {% else %}

      $('input:radio[name=optionsRadios]:nth(0)').attr('checked',true);
      //$('input:radio[name=sex]')[0].checked = true;

      {% end %}
    {% end %}

  });

但是 Tornado 告诉我,当用户列表为空时,变量 user 没有被初始化。所以我会将函数调用到 for 块中,将函数命名为例如 function check(){} 我不知道......只有当程序进入 for 块时,我才能如何调用函数?

谢谢!

4

1 回答 1

0

为什么你不能把它{{user.perm}}放到隐藏的输入中,然后从 js 代码中获取呢?

如果你想这样做,那么就这样做:

$(document).ready(function(){
    //function check(){

    {% for user in users %}
      {% if user.perm == 1 %}

      $('input:radio[name=optionsRadios]:nth(1)').attr('checked',true);
      //$('input:radio[name=sex]')[1].checked = true;

      {% elif user.perm == 4 %}  

      $('input:radio[name=optionsRadios]:nth(2)').attr('checked',true);
      //$('input:radio[name=sex]')[2].checked = true;

      {% else %}

      $('input:radio[name=optionsRadios]:nth(0)').attr('checked',true);
      //$('input:radio[name=sex]')[0].checked = true;

      {% end %}
    {% end %}

  });
于 2012-09-05T12:50:07.817 回答