我正在为mvc4使用Durandal启动模板。我已经设置了以下简单查看:将jquery插件结果加载到Durandal视图中
<section>
<h2 data-bind="html: displayName"></h2>
<h3 data-bind="html: posts"></h3>
<button data-bind="click: getrss">Get Posts</button>
<div id="rsstestid" ></div>
</section>
和视图模型:
define(function (require) {
var http = require('durandal/http'),
app = require('durandal/app');
return {
displayName: 'This is my RssTest',
posts: ko.observable(),
activate: function() {
return;
},
getrss: function() {
$('#rsstestid').rssfeed('http://feeds.reuters.com/reuters/oddlyEnoughNews');
return;
}
};
});
正如你所看到的,它只是使用zRssReader插件加载信息到一个div时“获取的帖子”按钮被点击。一切正常,显示名称已填充,帖子按预期显示。
我遇到麻烦的是当我尝试消除按钮并尝试在创建时加载帖子。如果我将插件调用放在激活函数中,我不会得到任何结果。我认为这是因为视图没有完全加载,所以元素不存在。我有两个问题:
- 如何延迟执行插件调用,直到视图完全组成为止?
- 更好的是,如何将插件结果加载到posts observable中而不是使用查询选择器?我尝试了很多组合,但没有运气
感谢您的帮助。
@Eval我试过你的解决方案,但得到这个错误:TypeError:$ rssTest.rssfeed不是一个函数。你有什么主意吗? – Parwej 2013-05-31 17:01:26
@ user836349确保viewAttached函数被调用。 Durandal应将此方法称为组合生命周期的一部分。然后确保$(view).find('#rsstestid');正在获取对dom元素的引用。问题在于这两项行动中的一项。 – 2013-05-31 18:34:13
谢谢@even是的,你是对的。问题在于这些问题。 – Parwej 2013-06-03 16:52:36