2

关于 _underscore 模板实用程序等如何加载模板以进行渲染,我已经看到了一些冗长的答案。我在下面的作品:

$.ajax({
    url: 'template.tmp',
    type: 'get',
    success: function(data) {
        $('html').append(data);
    }
});

代码位于加载 jquery 之后但在使用模板的任何脚本之前。这可以吗,或者是否有理由加载这样的模板不是一个好主意?templates.tmp 文件中包含模板

<script type="text/template" id="tmpId"></script>

标签。它们似乎很快就被加载到了 DOM 中。我准备因为这个实现而受到批评,但我只想知道为什么。如果调用“错误:”而不是“成功:”,我唯一能想到的可能是一些处理。谢谢。

4

1 回答 1

2

我决定制作我自己的基于 OO 的解决方案。这是构造函数:

var TemplateLoader = function(templatePath) {
    this.template = templatePath;
    this.loaded = false;
    this.error = false;
}

这些是方法:

TemplateLoader.prototype.setReady = function (state) {
    this.loaded = state;
}
TemplateLoader.prototype.setError = function (state) {
    this.error = state;
}
TemplateLoader.prototype.isReady = function () {
    return this.loaded;
}
TemplateLoader.prototype.isError = function () {
    return this.error;
}
TemplateLoader.prototype.loadTemplate = function() {
        templateLoader = this;
        $.ajax({
            url: this.template,
            type: 'get',
            success: function(data) {
                $('html').append(data);
                templateLoader.setReady(true);
            },
            error: function() {
                templateLoader.setError(true);
            }
        });
}

这是如何使用它:

templateLoader = new TemplateLoader('template.tmpl');
templateLoader.loadTemplate();

并检查模板是否已加载:

templateLoader.isReady() //true for loaded
templateLoader.isError() //true for error loading template, eg. template doesn't exist

再次,我很感激任何人都可以通过此代码看到的问题的任何反馈。如何检查附加到 HTML 的 DOM 对象。值得吗?

于 2013-05-06T13:40:26.767 回答