【问题标题】:How call a function when view is attached in Durandal?在 Durandal 中附加视图时如何调用函数?
【发布时间】:2013-10-28 17:54:13
【问题描述】:

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

示例:viewmodel.js

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


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

    });

没有找到ID调用轮播就是为什么没有view.hmtl内容只有index.html内容。

有什么想法吗? 提前致谢

更新 没有错误,但不返回视图内容。 视图.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;
});

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

【问题讨论】:

    标签: requirejs durandal durandal-2.0


    【解决方案1】:

    使用 compositionComplete 而不是 attached 解决了渲染问题。

    【讨论】:

      【解决方案2】:

      要像您请求的那样使用 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..

      【讨论】:

      • 我已经尝试过了,但是它返回了这个错误:Uncaught TypeError: Object # has no method 'find'
      • 你能详细说明一下吗?你的视图没有被渲染?
      • 使用 UPDATE 部分编辑问题。谢谢
      • 这有什么问题,为什么如果我调用 libone 函数内容视图未呈现?你能帮帮我吗?
      • libone 是您注册的另一个模块吗?它是像 jquery 还是淘汰赛这样的 3rd 方库?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2013-05-04
        • 2018-06-09
        • 2013-05-02
        • 2013-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多