【问题标题】:Passing array inside script tag in jquery template在jQuery模板中的脚本标签内传递数组
【发布时间】:2015-08-20 11:15:46
【问题描述】:

我试图在下面的脚本中传递一个数组,但它没有作为一个数组。下面是传递给 jquery-template 的散列结构。 options 是我要传递的数组

{
   "options": [
      [
        "category 1",
        "category 1",
        [
          [
            "subcategory 1",
            "subcategory 1",
            [
              [
                "item 1",
                "item 1"
              ],
              [
                "item 2",
                "item 2"
              ]
            ]
          ],
          [
            "subcategory 2",
            "subcategory 2",
            [
              [
                "item 1",
                "item 1"
              ],
              [
                "item 2",
                "item 2"
              ]
            ]
          ]
        ]
      ]
    ]
  }

我有我正在渲染的 jquery-template 代码,当我将选项传递给下面的 data_tree 时,它​​不会将其作为数组,而是将其作为非字符串,这会引发错误。

<script id="nestedFieldTemplate" type="text/x-jquery-tmpl">
  <script type="text/javascript">
        jQuery(document).ready(function(){
            jQuery('#div_ff').nested_select_tag({
                initValues: { 
                    "subcategory_val":null,
                    "item_val":null,
                    "category_val":null         
                },
                default_option: "<option value='-1'>...</option>",
                data_tree: ${options},
            });
        });
    {{html "</sc"+"ript>"}}
</script>

我也尝试将它作为普通的 javascript 变量传递,但没有运气。我会在下面的代码中将 jquery-template 变量作为数组传递。

下面是它是如何生成脚本的。

jQuery(document).ready(function(){           
    jQuery('#div_ff_ffs_02').nested_select_tag({            
        initValues: {             
            "subcategory_val":null,             
            "item_val":null,             
            "category_val":null                     
        },              
        default_option: "<option _tmplitem="14"  value='-1'>...</option>",              
        data_tree: category 1,category 1,subcategory 1,subcategory 1,item 1,item 1,item 2,item 2,subcategory 2,subcategory 2,item 1,item 1,item 2,item 2,subcategory 3,subcategory 3,,category 2,category 2,subcategory 1,subcategory 1,item 1,item 1,item 2,item 2,                        
    });       
});       

【问题讨论】:

  • 对齐你的大括号非常重要,或者为你找一个匹配大括号的编辑器。我无法确定您的阵列的正面或反面,但我知道它不是阵列。它是一个具有数组属性的对象。

标签: javascript jquery jquery-templates


【解决方案1】:

通过将您的代码粘贴到 Notepad++ 中,我在数组中发现了一个额外的大括号。试试这个:

{
    "options": 
    [
        [
        "category 1",
        "category 1",
            [
                [
                "subcategory 1",
                "subcategory 1",
                    [
                        [
                        "item 1",
                        "item 1"
                        ],
                        [
                        "item 2",
                        "item 2"
                        ]
                    ]
                ],
                [
                "subcategory 2",
                "subcategory 2",
                    [
                        [
                        "item 1",
                        "item 1"
                        ],
                        [
                        "item 2",
                        "item 2"
                        ]
                    ]
                ]
            ]
        ]
    ]
}

练习良好的缩进习惯,这个问题会少很多。

【讨论】:

  • 相应地进行了更改,数组很大,因此在发布之前对其进行了编辑,以免影响上下文。所以,错误不是由于数组的结构
  • 嗯,这是一个镜头。您现在是否遇到同样的错误?
  • 我现在有同样的错误,因为我说数组结构在发布之前被修改了。
  • 嗯,好的。您是否尝试过仅设置变量 options = [...]; 而没有上面的对象表示法?
  • 它是动态的,所以不能在那里设置数组,必须将它作为变量传递。
猜你喜欢
  • 2013-01-25
  • 2011-11-22
  • 2013-01-08
  • 1970-01-01
  • 2023-03-09
  • 2017-08-11
  • 2016-10-31
  • 2022-11-15
  • 2011-06-14
相关资源
最近更新 更多