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

Dar*_*eon 2 javascript requirejs requirejs-text

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

define(function (require) {

"use strict";

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

但是我收到此错误: 错误:模块名称"text!screens/home.html_unnormalized2"尚未加载上下文:_

如果我以这种方式尝试:

define(function (require) {

"use strict";

return function () {
     var html = require('text!screens/home.html');
}; });
Run Code Online (Sandbox Code Playgroud)

一切都好.但由于硬核提示网址,这种方法并不是很好.我怎么解决这个问题?

Nik*_*los 10

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

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

这具有不能立即返回值的不便.另请参阅promises原理(由许多库实现,jQuery也是如此).