2012-06-25 15 views
17

के साथ knockout.js मैपिंग प्लगइन requ.js में मैपिंग प्लगइन लोड करने का मानक तरीका क्या है?require.js

नीचे मेरी config.js (require.js कॉन्फ़िग फ़ाइल)

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" 
     } 
    } 
} 

मेरे विचार मॉडल

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

हालांकि में, मानचित्रण ko.mapping करने के लिए बाध्य नहीं है। किसी भी पॉइंटर्स/सुझावों की सराहना की जाएगी।

धन्यवाद, रवि

उत्तर

30

जब एएमडी के साथ प्रयोग किया, मानचित्रण प्लगइन अपनी कार्यक्षमता एक अलग वस्तु में निर्यात करता है। इसलिए, कार्यक्षमता आपके mapping चर से जुड़ी होगी और आप इसके तरीके से कॉल करेंगे (जैसे mapping.fromJS)।

अपने कोड के ko.mappingmapping के बराबर सेट करने के लिए, यदि आप कोड है कि ko.mapping जिसे आप परिवर्तित करने में असमर्थ हैं पर निर्भर करता है है चुन सकते हैं।

+0

+1 यह करने का तरीका यह है – daedalus28

+0

मैं कैसे मैप करूँगा ताकि मैं ko.mapping का उपयोग जारी रख सकूं? ty – David

+0

यदि आप आवश्यकता हो, तो आप मैपिंग ऑब्जेक्ट को को ऑब्जेक्ट में संलग्न कर सकते हैं। –

4

एक तरफ नोट पर, क्योंकि आप Lo-Dash का उपयोग कर रहे हैं, आपको RequjS "shim" विकल्पों में "अंडरस्कोर" शामिल करने की आवश्यकता नहीं है। लो-डैश एएमडी समर्थन में पकाया गया है

7

आपका विन्यास वस्तु निर्भरता का एक सेट और एक कॉलबैक जहां आगे निर्भरता विन्यास/हेरफेर किया जा सकता है निर्दिष्ट कर सकते हैं:।

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

    // configuration dependencies 

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

    // configuration callback 

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

और जब आप मार्कअप में अपनी स्क्रिप्ट में शामिल , config से पहले लोड किया जाना चाहिए की आवश्यकता होती है:

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

अब, Knockout.js जब एक मॉड्यूल परिभाषा में प्रयोग किया जाता के रूप में वांछित एक ko.mapping संपत्ति के साथ उपलब्ध हो जाएगा।

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

कृपया ध्यान दें कि यह एक संक्षिप्त कॉन्फ़िगरेशन उदाहरण है। उचित निर्यात निर्दिष्ट करने के लिए मैपिंग प्लगइन के लिए कुछ शर्मनाक जरूरी है, बस मेरे सिर के शीर्ष को याद न करें।

+0

मैं दौड़ की स्थिति में दौड़ रहा हूं जहां आवश्यकता है ([.. कॉलबैक रन से पहले कॉल किया जा रहा है। मुझे वाकई यह पसंद है कि कॉलबैक कैसे ko.mapping सेट करता है, लेकिन यह मेरे लिए हर समय काम नहीं करता है – Brandon

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^