3

我想用 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');
}; });

一切都好。但是由于核心提示 url,这种方法不是很好。我该如何解决这个问题?

4

1 回答 1

11

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

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

这带来了无法立即返回值的不便。还要看看promises的原理(由许多库实现,jQuery 也是)。

于 2013-10-15T07:30:50.400 回答