如何在装有json的html中包含.js文件?

时间:2014-02-15 14:24:43

标签: javascript jquery ajax json backbone.js

我需要显示一个javascript类的实例,它使用.json文件中的数据加载,并在主干中使用require.js。

我有以下js和json文件:

集合/ Companies.js

define([
    'models/Company'
], function(CompanyModel) {
    'use strict';

    var CompanyCollection = Backbone.Collection.extend({
        model: CompanyModel
    });

    return CompanyCollection;
});

数据/ companies.json

[{
    "id": 1000001,
    "name": "Test Company 1",
    "description": "this is a test company that should be displayed"
},
{
    "id": 1000002,
    "name": "Test Company 2",
    "description": "this is another test company that should be displayed as well"
}]

另外,我有以下代码段:

<script type="text/javascript" data-main="data/companies.json" src="collections/Companies.js"></script>
    <script type="text/javascript">
       require(["collections/Companies"],
        function(Companies){
            $("#json").append(Companies[0].id);
            alert("test");
        }
       );
    </script>

    <div id="json"></div>

当然它没有按照我的意图工作,我无法弄清楚正确的语法和/或迭代逻辑。 如何使用.json文件中的数据加载.js类? 我的<script type="text/javascript" data-main...行似乎不起作用。

如果我不够清楚,请提前致谢并抱歉。

1 个答案:

答案 0 :(得分:0)

requirejs通常用于加载脚本和模板文件,但您也可以使用它来加载.json文件。但你必须使用JSON.parse自己解析它。

您有两种不同的选择,

使用requirejs text plugin,例如:

require(["collections/Companies", "text!data/companies.json"],
    function(Companies, CompaniesJSONStr) {
        var CompaniesJSON = JSON.parse(CompaniesJSONStr);

    }
);

或使用requirejs plugins,它再次使用text!插件:

require.config({
    paths : {
        json: 'data'
    }
});

define([ 'collections/Companies', 'json!companies.json' ],
    function(Companies, CompaniesJSON){

    }
);