2013-08-19 40 views
0

我知道如何在KO中編寫服裝綁定。但是,當您使用杜蘭達時,我在哪裏放置代碼?我已經使用視圖附加和激活,我也沒有得到任何愛。ko綁定不會與durandal配合

這裏是低於

//knockout-handlers.js 
define(function (require) { 
    ko.bindingHandlers.slideVisible = { 
     init: function (element, valueAccessor) { 
      var value = ko.utils.unwrapObservable(valueAccessor()); 
      $(element).toggle(value); 
     }, 
     update: function (element, valueAccessor, allBindingsAccessor) { 
      var value = valueAccessor(), allBindings = allBindingsAccessor(); 
      var valueUnwrapped = ko.utils.unwrapObservable(value); 
      var duration = allBindings.slideDuration || 400; 

      if (valueUnwrapped == true) 
       $(element).slideDown(duration); 
      else 
       $(element).slideUp(duration); 
     } 
    }; 

    ko.bindingHandlers.fadeVisible = { 
     init: function (element, valueAccessor) { 
      var value = ko.utils.unwrapObservable(valueAccessor()); 
      $(element).toggle(value); 
     }, 
     update: function (element, valueAccessor, allBindingsAccessor) { 
      var value = valueAccessor(), allBindings = allBindingsAccessor(); 
      var valueUnwrapped = ko.utils.unwrapObservable(value); 
      var duration = allBindings.fadeDuration || 400; 

      if (valueUnwrapped == true) 
       $(element).fadeIn(duration); 
      else 
       $(element).fadeOut(duration); 
     } 
    }; 
}); 

回答

0

如果我明白你的問題的代碼,你不能激活自定義與迪朗達爾結合。 將視圖添加到您的視圖呈現之前的任何位置。我爲每個處理程序創建了模塊,然後在main.js中需要它。

我有類似的問題。 來源:https://groups.google.com/forum/#!topic/durandaljs/NIBVLKN6v1Y

3

我寫我的所有淘汰賽擴展(如客戶綁定的處理程序和擴展)作爲一個插件,這是我在main.js加載。

插件只是需要具有install方法的模塊,它應該包含實際打開插件的邏輯。在這種情況下,install方法應該將處理程序添加到ko對象。

Main.js

app.configurePlugins({ 

    //Durandal plugins 
    router:true, 
    dialog: true, 

    //My plugins 
    knockoutExtensions: true 
}); 

我的插件

define(['knockout'], function(ko) { 

    var install = function() { 
     //You know, do stuff 
    }; 

    return { 
     install: install 
    }; 
}); 

該方法只適用於迪朗達爾2.0。早期版本有不同的插件API