0

我刚刚开始使用 Durandal 开发一个网络应用程序。我不明白如何从视图模型中调用函数,以及为什么如果我发现文档中的某个元素似乎还没有附加。

示例:viewmodel.js

    define( ['libone', 'libtwo'], function () {


      $('.carousel').libone({
          expandbuttons: true,
          keyboard: true,
          mouse: true
      });

    });

它没有找到 ID 调用轮播是为什么没有 view.hmtl 内容而是 index.html 内容的原因。

有任何想法吗?提前致谢

UPDATE 没有错误但不返回视图内容。视图.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> 

模型视图.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;
});

只显示名称、描述和滚动,但不显示轮播部分。

4

3 回答 3

0

要像您要求的那样使用 jquery 访问控件,您应该使用视图附加事件,例如

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..

于 2013-10-28T18:03:46.930 回答
0

使用compositionComplete代替attach解决了渲染问题。

于 2013-10-29T15:30:45.067 回答
0

compositionComplete 工作正常。但是如果您刷新页面,composition Complete 会跳过元素与轮播的绑定,并且轮播不起作用。任何

于 2014-08-05T12:41:24.463 回答