0

我正在为我的一个视图使用主干并延迟加载模板和数据。对于“简单性”(就不必进行多个异步服务器调用而言),我试图从同一个文件person.php加载两者,它返回如下内容:

<script type='text/template' id='persons-template'>
    <div><%= name %></div>
</script>

<script type='text/javascript'>
    var persons: [
        { name: "some dude" },
        { name: "some other dude" }
    ];
</script>

视图本身正在使用 Ajax 调用加载此文件,并尝试解析,如下所示:

var self = this;
$.get("persons.php").function(data) {
    self.template = _.template($(data).html());

    self.model = new PersonsCollection;

    // problem here: persons is undefined
    self.model.reset(persons);
    self.render();
});

因此,persons是未定义的。我知道为什么:脚本块没有添加到 DOM 中。我可以使用 $(data)[1] 来获取HtmlScriptElement;使用 $($(data)[1]).text() 给我 Javascript 作为这样的字符串:

“变种人:[{名称:“一些家伙”},{名称:“其他一些家伙”}];”

如何访问people对象以便将其传递给我的模型?

4

1 回答 1

2

获取任何没有 typetype'text/javascript'的返回脚本,并在模板之前将其填充到 DOM中。

$.get("persons.php").function(data) {
    $(data)
        .find('script[type="text/javascript"], script[type!=""]')
        .appendTo('head');

  // proceed as before
});
于 2012-06-13T23:40:17.613 回答