2013-07-10 21 views
9

requireJS ile nakavt kullanırken özel bağlama işleyicileri uygulama konusunda bir sorun yaşıyorum. Temel olarak geçmişte, tüm özel bağlantılarımı içeren bir genel bağlama işleyicisi js dosyası ekledim. Artık bağımlılıkları uygulamak için requireJS kullanıyorum, bu özel bağlantılara nasıl erişeceğimi bilmiyorum. Anlatmalıydım sanki Nakavt ve Require ile Özel Ciltleme İşleyicileriJP

Ben 'Ancak, don bir deyimi

define(['jquery', 'knockout'], 
    function($, ko)){ 
// Custom Bindings 
return KOCustomBindings; 
} 
}); 

tanımlamak ben gerektiren kullanıyorum o Şimdi

function KOCustomBindings() { 
// Custom Bindings 
ko.bindingHandlers.returnKey = { 
//handler code 
} 
} 

ile küresel işlevler oluşturmak, hissediyorum yapmak için kullanılan Bağlamaların, özellikle bir şemada, özellikle de çağrılmadıkça yürütüleceğine inanıyor musunuz? Bununla ilgili herhangi bir fikri olan var mı? Yardımlarınız için

sayesinde

cevap

9

kullanmak gerekir şimdi ana görünümü modeli gerektiren herhangi bir çocuk görünümleri veya görünümlerinde

(My örnek ben moment.js ile kullanmış biridir) Nesne, sadece bir kez yüklenmek zorundadırlar ve modüllerinin herhangi bir şey döndürmesine gerek yoktur. Uygulamanızdaki ilk adım olarak bir ana/giriş/uygulama bölümünüz varsa, yalnızca özel bağlantılarınızı ve genişleticilerinizi gerektiren tek yapmanız gereken şey.

define(['jquery', 'knockout'], function($, ko)){ 
    // Custom Bindings 
    ko.bindingHandlers.returnKey = { ... } 

    //NO return needed 
}); 

Ardından, başlangıç ​​bölümünde, sadece

require('lib/custom-ko-bindings'); 
3

Bunu yapmanın kolay bir yolu özel bir AMD modül olarak bağlayıcı ve ebeveyn ViewModel onu gerektirir tanımlamaktır. Örnek -

Bindings.js

define(, function() { 
    ko.bindingHandlers.Date = { 
     update: function (element, valueAccessor) { 
      var value = valueAccessor(); 
      var date = moment(value()); 
      var strDate = date.format('MM-DD-YYYY'); 
      $(element).text(strDate); 
     } 
    }; 
}); 

Kişisel ViewModel - Bu, örneğin 'Tarihe' arasında Nakavt bağlama işleyicisi için DOM erişiminde herhangi bir öğeyi verecektir

define(['jquery', 'knockout', 'bindings'], 
    function($, ko, bindings)){ 
}); 

. özel bağlamaları ko değiştirmek yana

<span data-bind="Date: myDate" /> 
3

benim bağlamaları modülünde nakavt sarma ve modifiye nakavt örneğini iade ederek bunu başarmak için başardı.

require.config({ 
    paths: { 
    'knockout': 'lib/knockout', // name that's only used once in customBindings.js 
    'ko': 'app/customBindings' 
    } 
    // more config ommitted 
}); 

Benim özel bağlamaları:

define(['knockout'], function (ko) { 
    ko.bindingHandlers.returnKey = { 
     //handler code 
    } 
    return ko; 
}); 

Ve gerektiren nakavt sadece 'ko' başvurmak gerekir benim modülleri Burada ile sona erdi yapılandırma olduğunu.

require(['jquery', 'ko', 'underscore'], function ($, ko, _) { 
    // do knockout-y things! now with bindings! 
}); 
İlgili konular