2012-06-25 27 views
17

Eşleme eklentisinin standard yolla yükleme standardında yükleme yöntemi nedir?Knockout.js eşleme eklentisi require.js ile

Aşağıda benim config.js (require.js yapılandırma dosyası) benim bakış modeli Ancak

define(['knockout', 'knockoutmapping'], function(ko, mapping) { 
} 

yılında

require.config({ 
    // Initialize the application with the main application file. 
    deps: ["app"], 

    paths:{ 
     // JavaScript folders. 
     libs: "lib", 
     plugins: "lib/plugin", 
     templates: "../templates", 

     // Libraries. 
     jquery: "lib/jquery-1.7.2.min", 
     underscore: "lib/lodash", 
     text: 'text', 
     order: 'order', 
     knockout: "lib/knockout", 
     knockoutmapping: "lib/plugin/knockout-mapping" 

    }, 

    shim:{ 
     underscore:{ 
      exports: '_' 
     }, 

     knockout:{ 
      deps: ["jquery"], 
      exports: "knockout" 
     } 
    } 
} 

, haritalama ko.mapping bağlı değil mi. Herhangi bir işaretçi/öneri takdir edilecektir. AMD birlikte kullanıldığında

sayesinde Ravi

cevap

30

, haritalama eklentisi ayrı nesnesine işlevselliğini ihraç ediyor. Bu nedenle, işlevsellik mapping değişkeninize eklenecek ve bunun yöntemlerini çağıracaksınız (mapping.fromJS gibi).

Sen değiştirmek mümkün değildir ko.mapping bağlı kodu varsa, kodunuzda mapping eşit ko.mapping ayarlamayı tercih olabilir.

+0

+1 Bunu yapmanın yolu budur – daedalus28

+0

Nasıl ko.mapping kullanmaya devam edebilsem nasıl eşlenir? ty – David

+0

eşleme nesnesini, gerekiyorsa ko nesnesine ekleyebilirsiniz. –

4

Bir yan notda, Lo-Dash kullandığınız için RequireJS "shim" seçeneklerine "alt çizgi" eklemeniz gerekmez. Lo-Dash AMD desteği pişmiş olan

7

Yapılandırma nesne bağımlılıklar kümesi ve daha fazla bağımlılık yapılandırması/manipülasyon yapılabilir bir geri arama belirtebilirsiniz. Eğer işaretlemesinde komut dosyalarınızı eklediğinizde

var require = { 
    paths: { 
    'knockout': '...', 
    'mapping': '...' 
    }, 

    // configuration dependencies 

    deps: ['knockout', 'mapping'], 

    // configuration callback 

    callback: function (ko, mapping) { 
    ko.mapping = mapping; 
    } 
}; 

Ve , yapılandırma önce yüklenmiş olması gerekir gerektirir: bir modül tanımında kullanıldığında arzu edildiği gibi Şimdi

<script src="/scripts/config.js" /> 
<script src="/scripts/require.js" /> 

, Knockout.js bir ko.mapping özelliği ile mevcut olacaktır.

define(['knockout'], function (ko) { 
    // ko.mapping is available 
}); 

Lütfen bunun kısaltılmış bir yapılandırma örneği olduğunu unutmayın. Eşleme eklentisinin uygun ihracatları belirtmesi için gerekli olan bazı kısıntılar var, sadece kafamın üstünden ne olduğunu hatırlamıyorum.

+0

Gereksinim duyulduğunda bir yarış koşuluna koşuyorum ([.. geri arama çalıştırılmadan önce çağrılıyor. Geri aramaların nasıl ko.mapping yaptığını gerçekten seviyorum ama her zaman benim için çalışmıyor – Brandon

İlgili konular