我想用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');
}; });
一切都好。但由于硬核提示网址,这种方法并不是很好。我该如何解决这个问题?
答案 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实施)。