热毛巾SPA Durandal Knockout和Dynatree

时间:2013-03-14 14:42:55

标签: knockout.js dynatree durandal hottowel

我试图让dynatree控件在Hottowel视图模型中工作,基于这个小提琴,http://jsfiddle.net/EZgNs

var ViewModel = function() {
    var self = this;
    self.initialized = ko.observable(false);
    self.items = ko.observableArray();

    // Use JSFiddle echo to simulate an AJAX service
    (function() {
        $.ajax({ url:"/echo/json/", data:data, type:"POST",
                 success:function(data)
                 {
                   // Map the returned JSON to the View Model  
                   ko.mapping.fromJS(data, {}, self.items);
                   self.initialized(true);
                 }
               });
     })();    
};

ko.bindingHandlers.dynatree = {
    update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
        setTimeout( function() { $(element).dynatree()}, 0);
    }
};

ko.applyBindings(new ViewModel());

无法理解如何编辑vm以合并dynatree ko。

1 个答案:

答案 0 :(得分:2)

首先,你不应该明确地绑定你的viewmodel;让Durandal为你做这件事。接下来,您可以通过将绑定处理程序放在main.js或shell.js文件的activate方法中来注册任何淘汰绑定处理程序。这样,您可以保证绑定处理程序在绑定时可用于所有viewmodel / view组合。