我刚刚开始用Durandal开发一个网络应用程序。我不明白如何从一个viewmodel调用一个函数,为什么如果我找到我的文档的一个元素,它似乎还没有附加。
示例:viewmodel.js
define( ['libone', 'libtwo'], function () {
$('.carousel').libone({
expandbuttons: true,
keyboard: true,
mouse: true
});
});
它没有找到ID调用轮播是为什么没有view.hmtl内容而是index.html内容。
有什么想法吗? 提前致谢
UPDATE 没有错误,但不返回视图内容。 view.html
<section>
<h2 data-bind="html:name"></h2>
<blockquote data-bind="html:descr"></blockquote>
<div class="carousel">
<div class="carousel-sections">
<div class="carousel-section"> ... some content ... </div>
</div>
</div>
<a id="carousel-scroll-prev" href="#"></a>
<a id="carousel-scroll-next" href="#"></a>
<section>
modelview.js
define( ['libone', 'libtwo'], function (libone, libtwo) {
var viewattached = function(view){
var view = $(view);
view.find('.carousel').libone({
expandbuttons: true,
keyboard: true,
mouse: true
});
};
var vm = {
attached: viewattached,
name: 'How about we start?',
descr: 'You have many choices to make and many roads to cross...'
};
return vm;
});
仅显示名称,描述和滚动,但不显示轮播部分。
答案 0 :(得分:0)
要像使用请求一样使用jquery访问控件,您应该使用视图附加事件 e.g。
define( ['libone', 'libtwo'], function (libone, libtwo) {
var viewattached = function(view){
var view = $(view);
view.find('.carousel').libone({
expandbuttons: true,
keyboard: true,
mouse: true
});
};
var vm = {
attached: viewattached
};
return vm;
});
可能有效的另一个是compsitionComplete ..
答案 1 :(得分:0)
使用 compositionComplete 而非 附加 解决了渲染问题。
答案 2 :(得分:0)
compositionComplete工作正常。但是如果刷新页面,合成完成会跳过元素与轮播的绑定,而轮播不起作用。 任何