如何使用RequireJS动态加载html内容

时间:2013-10-15 03:58:49

标签: javascript requirejs requirejs-text

我想用RequireJS加载html内容,如下所示:

define(function (require) {

"use strict";

return function (id) {
     var url = 'text!screens/' + id + '.html';
     var html = require(url);
}; });

但是我收到了这个错误: 错误:尚未为上下文加载模块名称“text!screens / home.html_unnormalized2”:_

如果我以这种方式尝试:

define(function (require) {

"use strict";

return function () {
     var html = require('text!screens/home.html');
}; });
一切都好。但由于硬核提示网址,这种方法并不是很好。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:9)

对于尚未加载的模块,内联参数require调用只能异步运行,就像您的情况一样。原则是(还注意url在一个数组中):

var url = 'text!screens/' + id + '.html';
require([url],
    function(text) {
        // use text
    },
    function(err) { // OPTIONAL BUT GOOD PRACTICE
        // handle error
    }
);

这使得不能立即返回值的不便之处。另请参阅promises的原则(由许多图书馆jQuery too实施)。