我有一种情况需要在我的ember应用程序中呈现外部html。这个外部html是一个完整形成的html,有自己的css和js。有没有办法实现这一目标。
到目前为止,我尝试创建一个返回html的属性但它没有工作并且没有抛出错误。
控制器:
...
myhtml: function() {
return this.get('C:\\file.html');
}.property('myhtml')
...
模板:
...
{{myhtml}} //also tried {{{myhtml}}}
...
答案 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()
应该这样做。