如何在模板中读取外部html?

时间:2014-11-17 14:34:28

标签: ember.js handlebars.js

我有一种情况需要在我的ember应用程序中呈现外部html。这个外部html是一个完整形成的html,有自己的css和js。有没有办法实现这一目标。

到目前为止,我尝试创建一个返回html的属性但它没有工作并且没有抛出错误。

控制器:

...
myhtml: function() {
   return this.get('C:\\file.html');
}.property('myhtml')
...

模板:

...
{{myhtml}} //also tried {{{myhtml}}}
...

1 个答案:

答案 0 :(得分:1)

首先,您的功能应如下所示:

myhtml: function () {
  <code here>
}.property()

你最后不需要.property('myhtml'),因为据我所知,这没有任何意义。

现在,我们想要的是用一些代码替换<code here>,这些代码将返回包含您要显示的页面的HTML的字符串。检索HTML是异步的,这意味着需要一些时间。因此,您真正想要的是myhtml返回承诺(http://emberjs.com/api/classes/RSVP.Promise.html):

myhtml: function () {
  return new Ember.RSVP.Promise(function (resolve, reject) {
    <code here>
  });
}.property()

好的,现在基本的想法是你想使用AJAX来检索页面的HTML,一旦你得到它,你就想在那个HTML上调用resolve函数。这将是模板中{{{myhtml}}}显示该HTML的触发器:

myhtml: function () {
  return new Ember.RSVP.Promise(function (resolve, reject) {
    Ember.$.ajax({
      url: '<website-url-here>',
      method: 'GET',
      success: function (html) {
        resolve(html);
      },
      error: function () {
        reject();
      }
    });
  });
}.property()

应该这样做。