相关疑难解决方法(0)

使用knockout.js 构建手风琴

对某些人来说可能是一个微不足道的问题。我的对象有一个视图模型,如下所示:

this.Activities = ko.observableArray([
{ "date": "28/11/2012 00:00:00",
  "activities": [
     { "company": "BOW",
       "description": "Backup Checks",
       "length": "60"
     },
     { "company": "AMS",
       "description": "Data Request",
       "length": "135"
     },
  ]},
{ "date": "30/11/2012 00:00:00",
  "activities": [
     { "company": "BOW",
       "description": "Backup Checks",
       "length": "60"
     },
     { "company": "SLGT",
       "description": "Software Development",
       "length": "240"
     },
     { "company": "BOW",
       "description": "Data Request",
       "length": "30"
     },
  ]},
]);
Run Code Online (Sandbox Code Playgroud)

我想构建一个可以隐藏活动数组并显示日期的手风琴。每当单击某个日期时,将通过展开下面的相应面板来显示与该日期匹配的活动列表。现在,在我不使用 Knockout.js 的项目中,我只是使用通用 Activity 对象的 Id 将手风琴标题的 ID 属性与手风琴主体元素中的名称属性链接起来。我在强类型视图中使用模型属性来实现这一点。由于在 Knockout.js 中我提供了一个包含活动细节的视图模型,因此我对在数据绑定时创建的 Html 结构的控制有限。那么如何将手风琴标题与匹配的正文元素链接起来?

javascript model-view-controller view knockout.js

4
推荐指数
1
解决办法
5374
查看次数

Knockout手风琴绑定打破了

以下绑定在1.9之前有效:

ko.bindingHandlers.accordion = {
    init: function(element, valueAccessor) {
        var options = valueAccessor() || {};
        setTimeout(function() {
            $(element).accordion(options);
        }, 0);
        ko.utils.domNodeDisposal.addDisposeCallback(element, function(){
            $(element).accordion("destroy");
        });
    },
    update: function(element, valueAccessor) {
        var options = valueAccessor() || {};
        $(element).accordion("destroy").accordion(options);
    }
}
Run Code Online (Sandbox Code Playgroud)

但自1.9以来,它不再有效,并给出以下错误:

Uncaught Error: cannot call methods on accordion prior to initialization; attempted to call method 'destroy'
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚原因.我查看了jQuery UI升级说明,但似乎没什么关系.

造成这种情况的原因是什么,我的绑定需要改变什么?

javascript binding jquery-ui knockout.js

3
推荐指数
1
解决办法
3290
查看次数