如何使用app.locals。 JavaScript中的参数?

时间:2018-10-15 18:19:46

标签: javascript html node.js json

我正在开发一个node.js应用程序。我在app.js中将JSON文件加载为app.locals.parameter。 然后我试图在index.hbs中使用它。

假设:

app.locals.componentData = require('./myfile.json');

当我在下面的HTML部分中使用参数时,它可以正常运行。

 {{#each componentData.categories}}
        <li id="{{this.categoryName}}" name="{{this.categoryName}}" class="btn btn-primary btn-sm" style="position: relative; z-index: 10; margin-bottom:3px" draggable="true" role="option" aria-grabbed="false"><div><img src="images/plugin.png" alt="{{this.categoryDescription}}"/>{{this.categoryName}}</div></li>
 {{/each}}

但是当我尝试在我的javascript函数中使用参数时,它无法识别它。

function InitComponents() {
         for( var i = 0; i < componentData.categories.length; i++ ){
             alert("in loop!"+i+"-"+componentData.categories[i].categoryName);
              if(componentData.categories[i].categoryName.match(itemId)){
              alert("here:"+componentData.categories[i].parameters.length);
          createParameterList(newID,componentData.categories[i].parameters);
                        }

            }

    }

我的JSON格式如下:

{
    "categoryName": "xyz",
    "categories": [
      {
        "categoryName": "ABC", 
        "parameters": [
          {
            "ParameterID": "ID",
            "ParameterName": "ID",
            "ParameterDefultValue": "",
            "ParameterValue": "",
            "ParameterDescription": "ID Description"
          }]
}]
}

我可以知道为什么系统无法理解   componentData.categories.length  在我的脚本部分?

1 个答案:

答案 0 :(得分:1)

这里的问题是for (var i = 0; i < Object.keys(data).length; i++) { console.log(JSON.stringify(data.quote.symbol)); } 函数对InitComponents一无所知。 app.locals变量可在模板中识别。为了使代码正常工作,您需要将app.locals作为参数传递给app.locals.componentData函数:

InitComponents

现在您可以像这样调用此函数

function InitComponents(componentData) {
     for( var i = 0; i < componentData.categories.length; i++ ){
         alert("in loop!"+i+"-"+componentData.categories[i].categoryName);
          if(componentData.categories[i].categoryName.match(itemId)){
            alert("here:"+componentData.categories[i].parameters.length);
            createParameterList(newID,componentData.categories[i].parameters);
          }
     }
}

InitComponents(app.locals.componentData); 现在将真正知道InitComponents是什么。 如果您在中间件中使用此功能,则可以通过componentData访问app

req.app