2011-11-02 17 views
9

बूटस्ट्रैप किए गए चर और JSON को पास किए गए पृष्ठ (यानी JSON डेटा या कॉन्फ़िगरेशन चर) में बूटस्ट्रैप किए गए चर को require.js पर पास करने के लिए सबसे अच्छा अभ्यास क्या है ताकि उन्हें निर्भरता द्वारा उपयोग के लिए चेक किया जा सके?आवश्यकताएँ .js

ऐसा लगता है कि इस window वस्तु (यानी window.bootstrapped_models की जाँच करके किया जा सकता है दिखता है, लेकिन है कि बहुत इष्टतम प्रतीत नहीं होता

app.html - उदाहरण के अनुप्रयोग - HTML दस्तावेज़

<script> 
var config = { 
    "isAdmin": true, 
    "userId": 1 
}; 
var bootstrapped_models = { 
    "groups": [ 
     { 
      "id": 1, 
      "name": "Foo" 
     }, 
     { 
      "id": 2, 
      "name": "Bar" 
     } 
    ] 
} 
</script> 

app.js भीतर उदाहरण डेटा। आवश्यकता का उपयोग()

require(['jquery', 'GroupCollection'], function($, GroupCollection) { 

    // extend default config 
    if (config) { 
     $.extend(defaults, config); 
    } 

    // use bootstrapped JSON here 
    var collection = new GroupCollection; 
    if (bootstrapped_models.groups.length > 0) { 
     collection.add(bootstrapped_models.groups); 
    } 

}); 

उत्तर

0

सुनिश्चित नहीं है कि मेरी विधि सबसे अच्छी है

<script type="text/javascript"> 
    define("bootstrappedModelJson", function() { 
     return @Html.Action("Controller", "RenderModel"); 
    }); 

    require({ 
     baseUrl: //etc. 
    }, ["app"], 
    function(){ 

    }); 
</script> 

तो मैं एक js फ़ाइल current.model कहा जाता है: ce लेकिन मैं कुछ है कि तुम क्या वैश्विक वस्तु पर बूटस्ट्रैप मॉडल butting के बजाय छोड़कर कर रहे हैं, मैं एक बनाने की तरह एक बहुत कुछ मेरी HTML पृष्ठ में इसके लिए परिभाषित करना कि इस तरह अन्य मॉड्यूल और दिखता है के लिए आवश्यक जा सकता है:

define(
[ 
    'require', 
    'model' 
], 
function (require, Model) 
{ 
    var json= require("bootstrappedModelJson"); 

    return new Model(json); 
}); 
6

@timDunham से उत्तर उपयोगी था, लेकिन यह मेरे लिए थोड़ा ज्यादा जटिल महसूस किया। Require.js और लिथियम (PHP एमवीसी) के साथ खेलना मैं निम्नलिखित के साथ आया था। यह आसान है और मैंने जो भी उदाहरण चलाया है उसमें काम किया है।

<script type="text/javascript"> 
define('bootstrapData', function() { 
    return <?php echo json_encode($bootstrapData) ?>; 
}); 
</script> 

कौन सा तो निम्न कार्य करके उपलब्ध है:

define(['bootstrapData'], function(bootstrapData) { 
    console.log(bootstrapData); // Will output your bootstrapped object 
}); 

जाहिर है जिस तरह से मैं में डेटा लाने कर रहा हूँ विशिष्ट भाषा है, लेकिन बाकी अपनी स्थिति की परवाह किए बिना उपयोगी होना चाहिए।

+0

धन्यवाद। आपका कोड वास्तव में उपयोगी है –

+1

मैं इसे अपने जेएस को अनुकूलित करने के साथ काम करने के लिए नहीं मिला ... मैंने बूस्ट्रैपडाटा मॉड्यूल के साथ बहिष्कृत करने का प्रयास किया लेकिन जब मैं संकलित करने गया तो अभी भी बूटस्ट्रैपडेटा फ़ाइल ढूंढने का प्रयास किया। क्या कोई यह समझा सकता है कि उन्हें काम करने के लिए कैसे मिला? मैं requ.js के लिए काफी नया हूँ। इसके अलावा, मैं संस्करण 1.0.1 की आवश्यकता का उपयोग कर रहा हूं (यदि कोई फर्क पड़ता है) –

0

आप अनुकूलन के साथ समस्याओं को हल/अपने build.js इस तरह में bootstrapData को अक्षम करके निर्माण कर सकते हैं:

paths: { 
    bootstrapData: "empty:", 
संबंधित मुद्दे