AngularJS में दृश्य / आंशिक विशिष्ट स्टाइल को कैसे शामिल किया जाए


132

मेरे द्वारा उपयोग किए जाने वाले विभिन्न दृश्यों के लिए अलग-अलग स्टाइलशीट का उपयोग करने का उचित / स्वीकृत तरीका क्या है?

वर्तमान में मैं शीर्ष पर दृश्य / आंशिक HTML में एक लिंक तत्व दे रहा हूं, लेकिन मुझे बताया गया है कि यह बुरी प्रथा है, हालांकि सभी आधुनिक ब्राउज़र इसका समर्थन करते हैं, लेकिन मैं देख सकता हूं कि यह क्यों है।

दूसरी संभावना मेरे index.html में अलग-अलग स्टाइलशीट दे रही है, headलेकिन मैं यह चाहूंगा कि केवल स्टाइलशीट को लोड किया जाए यदि प्रदर्शन के नाम पर इसका दृश्य लोड किया जा रहा है।

क्या यह बुरा अभ्यास है क्योंकि स्टाइल तब तक प्रभावी नहीं होगा जब तक कि सीएसएस को सर्वर लोड न कर दिया जाए, जिससे धीमी गति से ब्राउजर में अनियंत्रित सामग्री का त्वरित फ्लैश हो? मुझे अभी तक इसका गवाह बनना है, हालांकि मैं इसका स्थानीय स्तर पर परीक्षण कर रहा हूं।

क्या एंगुलर को पास की गई वस्तु के माध्यम से सीएसएस को लोड करने का एक तरीका है $routeProvider.when?

अग्रिम में धन्यवाद!


मैंने आपके "अनियंत्रित सामग्री के त्वरित फ्लैश" दावे को मान्य किया। मैंने इस प्रारूप<link> में सीएसएस टैग का उपयोग किया , नवीनतम क्रोम के साथ, मेरी स्थानीय मशीन पर सर्वर (और "पहले लोड" स्थितियों का अनुकरण करने के लिए "कैश अक्षम करें")। मुझे लगता है कि सर्वर पर आंशिक रूप से HTML में एक टैग डालने से इस समस्या से बचा जा सकेगा। <style>
poshest

जवाबों:


150

मुझे पता है कि यह सवाल अब पुराना है, लेकिन इस समस्या के विभिन्न समाधानों पर एक टन अनुसंधान करने के बाद, मुझे लगता है कि मैं एक बेहतर समाधान के साथ आया हूं।

अद्यतन 1: इस उत्तर को पोस्ट करने के बाद से, मैंने इस कोड को एक साधारण सेवा में जोड़ दिया है जिसे मैंने GitHub में पोस्ट किया है। रेपो यहां स्थित है । अधिक जानकारी के लिए इसे आज़ाद करें।

अद्यतन 2: यह उत्तर बहुत अच्छा है, यदि आपको अपने मार्गों के लिए स्टाइलशीट में खींचने के लिए हल्का हल चाहिए। यदि आप अपने पूरे आवेदन में ऑन-डिमांड स्टाइलशीट के प्रबंधन के लिए अधिक संपूर्ण समाधान चाहते हैं, तो आप डोर 3 के एंगुलर प्रोग्राम की जांच कर सकते हैं । यह बहुत अधिक सुव्यवस्थित कार्यक्षमता प्रदान करता है।

यदि भविष्य में किसी को दिलचस्पी है, तो यहां मैं बता रहा हूं:

1. <head>तत्व के लिए एक कस्टम निर्देश बनाएँ :

app.directive('head', ['$rootScope','$compile',
    function($rootScope, $compile){
        return {
            restrict: 'E',
            link: function(scope, elem){
                var html = '<link rel="stylesheet" ng-repeat="(routeCtrl, cssUrl) in routeStyles" ng-href="{{cssUrl}}" />';
                elem.append($compile(html)(scope));
                scope.routeStyles = {};
                $rootScope.$on('$routeChangeStart', function (e, next, current) {
                    if(current && current.$$route && current.$$route.css){
                        if(!angular.isArray(current.$$route.css)){
                            current.$$route.css = [current.$$route.css];
                        }
                        angular.forEach(current.$$route.css, function(sheet){
                            delete scope.routeStyles[sheet];
                        });
                    }
                    if(next && next.$$route && next.$$route.css){
                        if(!angular.isArray(next.$$route.css)){
                            next.$$route.css = [next.$$route.css];
                        }
                        angular.forEach(next.$$route.css, function(sheet){
                            scope.routeStyles[sheet] = sheet;
                        });
                    }
                });
            }
        };
    }
]);

यह निर्देश निम्नलिखित बातें करता है:

  1. यह $compileएक HTML स्ट्रिंग का उपयोग (संकलन ) करता है <link />जो scope.routeStylesऑब्जेक्ट का उपयोग करके प्रत्येक आइटम के लिए टैग का एक सेट बनाता है ng-repeatऔर ng-href
  2. यह टैग के <link />लिए तत्वों के संकलित सेट को जोड़ता है <head>
  3. यह तब घटनाओं $rootScopeको सुनने के लिए उपयोग करता है '$routeChangeStart'। प्रत्येक '$routeChangeStart'घटना के लिए, यह "वर्तमान" $$routeऑब्जेक्ट (उपयोगकर्ता को छोड़ने वाला मार्ग) और <head>टैग से उसकी आंशिक-विशिष्ट सीएसएस फ़ाइल (एस) को हटा देता है । यह "अगली" $$routeऑब्जेक्ट को भी पकड़ लेता है (उपयोगकर्ता के पास जाने का मार्ग) और <head>टैग के लिए अपनी आंशिक-विशिष्ट सीएसएस फ़ाइल में से किसी को जोड़ता है ।
  4. और ng-repeatसंकलित <link />टैग का हिस्सा पृष्ठ-विशिष्ट स्टाइलशीट को जोड़ने और हटाने के सभी को संभालता है जो scope.routeStylesऑब्जेक्ट में जोड़ा या हटा दिया गया है।

नोट: इसके लिए आवश्यक है कि आपकी ng-appविशेषता <html>तत्व पर हो, न कि <body>अंदर या किसी भी चीज के अंदर <html>

2. निर्दिष्ट करें कि कौन से स्टाइलशीट किन मार्गों से संबंधित हैं $routeProvider:

app.config(['$routeProvider', function($routeProvider){
    $routeProvider
        .when('/some/route/1', {
            templateUrl: 'partials/partial1.html', 
            controller: 'Partial1Ctrl',
            css: 'css/partial1.css'
        })
        .when('/some/route/2', {
            templateUrl: 'partials/partial2.html',
            controller: 'Partial2Ctrl'
        })
        .when('/some/route/3', {
            templateUrl: 'partials/partial3.html',
            controller: 'Partial3Ctrl',
            css: ['css/partial3_1.css','css/partial3_2.css']
        })
}]);

यह कॉन्फ़िगरेशन उस कस्टम cssप्रॉपर्टी को ऑब्जेक्ट में जोड़ता है जिसका उपयोग प्रत्येक पृष्ठ के रूट को सेटअप करने के लिए किया जाता है। वह वस्तु प्रत्येक '$routeChangeStart'घटना के रूप में पारित हो जाती है .$$route। इसलिए जब '$routeChangeStart'घटना को सुनते हैं , तो हम उस cssसंपत्ति को हड़प सकते हैं जिसे हमने निर्दिष्ट किया था और <link />आवश्यकतानुसार उन टैगों को जोड़ / हटा दें । ध्यान दें कि cssमार्ग पर एक संपत्ति निर्दिष्ट करना पूरी तरह से वैकल्पिक है, क्योंकि यह '/some/route/2'उदाहरण से छोड़ा गया था । यदि मार्ग में कोई cssगुण नहीं है , तो <head>निर्देश केवल उस मार्ग के लिए कुछ नहीं करेगा। यह भी ध्यान दें कि आपके पास प्रति मार्ग में कई पृष्ठ-विशिष्ट स्टाइलशीट हो सकते हैं, जैसा कि '/some/route/3'ऊपर दिए गए उदाहरण में है, जहां cssसंपत्ति उस मार्ग के लिए आवश्यक शैलियों के सापेक्ष पथ का एक सरणी है।

आप कर रहे हैं उन दो चीजों की स्थापना की जरूरत है कि सब कुछ और यह मेरी राय में, सबसे साफ कोड के साथ संभव है।

आशा है कि किसी और की मदद करता है जो इस मुद्दे से उतना ही जूझ सकता है जितना मैं था।


2
पवित्र मोली, इसके लिए धन्यवाद! ठीक वही जो मेरे द्वारा खोजा जा रहा था :)। अभी इसका परीक्षण किया है और यह पूरी तरह से काम करता है (प्लस को लागू करना आसान है)। हो सकता है कि आपको इसके लिए एक पुल अनुरोध बनाना चाहिए और इसे कोर में लाना चाहिए। मुझे पता है कि AngularJS के लोग scoped css में दिख रहे थे, यह सही दिशा में एक कदम हो सकता है?
smets.kevin

वे लोग मेरे मुकाबले ज्यादा होशियार हैं। मुझे यकीन है कि उन्होंने इससे पहले (या इसी तरह) समाधान सोचा होगा और जो भी कारण के लिए इसे कोर में लागू नहीं करने के लिए चुना है।
टेनिसजैन

सीएसएस फ़ाइल के लिए सही जगह क्या है? क्या css: 'css / आंशिक1.css' कोणीय फ़ोल्डर के मूल में css फोल्डर है?
कॉर्डल

आपकी index.htmlफाइल के सापेक्ष । इसलिए ऊपर के उदाहरण में, रूट में होगा index.htmlऔर cssफ़ोल्डर रूट में होगा, जिसमें सभी सीएसएस फाइलें होंगी। लेकिन जब तक आप सही रिश्तेदार रास्तों का उपयोग करते हैं, तब तक आप अपने ऐप को संरचना कर सकते हैं।
टेनिस

1
@Kappys, जब आप किसी नए दृश्य पर जाते हैं, तो स्क्रिप्ट पिछले दृश्य के लिए शैली को हटा देती है। आप ऐसा नहीं करना चाहते हैं, तो बस के निर्देश से निम्नलिखित कोड निकालें: angular.forEach(current.$$route.css, function(sheet){ delete scope.routeStyles[sheet]; });
15

34

@ टेनिस के समाधान महान है। हालांकि, मुझे लगता है कि थोड़ा सीमित है।

कोणीय में मॉड्यूलरिटी और एनकैप्सुलेशन मार्गों से परे जाता है। जिस तरह से वेब घटक-आधारित विकास की ओर बढ़ रहा है, उसके आधार पर इसे निर्देशों में भी लागू करना महत्वपूर्ण है।

जैसा कि आप पहले से ही जानते हैं, कोणीय में हम पृष्ठों और घटकों में टेम्प्लेट (संरचना) और नियंत्रक (व्यवहार) शामिल कर सकते हैं। एंगुलरसीएसएस अंतिम लापता टुकड़े को सक्षम करता है: स्टाइलशीट्स (प्रस्तुति) संलग्न करना।

एक पूर्ण समाधान के लिए मैं AngularCSS का उपयोग करने का सुझाव देता हूं।

  1. का समर्थन करता है कोणीय की ngRoute, यूआई रूटर, निर्देश, नियंत्रकों और सेवाओं।
  2. टैग ng-appमें होना आवश्यक नहीं है <html>। यह महत्वपूर्ण है जब आपके पास एक ही पृष्ठ पर कई ऐप्स चल रहे हों
  3. आप अनुकूलित कर सकते हैं जहां स्टाइलशीट इंजेक्ट की जाती है: सिर, शरीर, कस्टम चयनकर्ता, आदि ...
  4. प्रीलोडिंग, कंसिस्टिंग और कैशे बस्टिंग का समर्थन करता है
  5. मीडिया प्रश्नों का समर्थन करता है और मैचमेडिया एपीआई के माध्यम से पेज लोड का अनुकूलन करता है

https://github.com/door3/angular-css

यहाँ कुछ उदाहरण हैं:

मार्गों

  $routeProvider
    .when('/page1', {
      templateUrl: 'page1/page1.html',
      controller: 'page1Ctrl',
      /* Now you can bind css to routes */
      css: 'page1/page1.css'
    })
    .when('/page2', {
      templateUrl: 'page2/page2.html',
      controller: 'page2Ctrl',
      /* You can also enable features like bust cache, persist and preload */
      css: {
        href: 'page2/page2.css',
        bustCache: true
      }
    })
    .when('/page3', {
      templateUrl: 'page3/page3.html',
      controller: 'page3Ctrl',
      /* This is how you can include multiple stylesheets */
      css: ['page3/page3.css','page3/page3-2.css']
    })
    .when('/page4', {
      templateUrl: 'page4/page4.html',
      controller: 'page4Ctrl',
      css: [
        {
          href: 'page4/page4.css',
          persist: true
        }, {
          href: 'page4/page4.mobile.css',
          /* Media Query support via window.matchMedia API
           * This will only add the stylesheet if the breakpoint matches */
          media: 'screen and (max-width : 768px)'
        }, {
          href: 'page4/page4.print.css',
          media: 'print'
        }
      ]
    });

निर्देशों

myApp.directive('myDirective', function () {
  return {
    restrict: 'E',
    templateUrl: 'my-directive/my-directive.html',
    css: 'my-directive/my-directive.css'
  }
});

इसके अतिरिक्त, आप $cssकिनारे के मामलों के लिए सेवा का उपयोग कर सकते हैं :

myApp.controller('pageCtrl', function ($scope, $css) {

  // Binds stylesheet(s) to scope create/destroy events (recommended over add/remove)
  $css.bind({ 
    href: 'my-page/my-page.css'
  }, $scope);

  // Simply add stylesheet(s)
  $css.add('my-page/my-page.css');

  // Simply remove stylesheet(s)
  $css.remove(['my-page/my-page.css','my-page/my-page2.css']);

  // Remove all stylesheets
  $css.removeAll();

});

आप यहां AngularCSS के बारे में अधिक पढ़ सकते हैं:

http://door3.com/insights/introducing-angularcss-css-demand-angularjs


1
मैं वास्तव में आपके दृष्टिकोण को पसंद करता हूं, लेकिन सोच रहा था कि इसे एक उत्पादन ऐप में कैसे इस्तेमाल किया जा सकता है जहां सभी सीएसएस शैलियों को एक साथ समाहित करने की आवश्यकता है? Html टेम्पलेट के लिए मैं उत्पादन कोड के लिए $ templateCache.put () का उपयोग करता हूं और सीएसएस के लिए कुछ ऐसा ही करना अच्छा होगा।
टॉम मैकिन

यदि आपको सर्वर से संक्षिप्त सीएसएस प्राप्त करने की आवश्यकता है, तो आप हमेशा कुछ कर सकते हैं जैसे /getCss?files=file1(.css),file2,file3 और सर्वर दिए गए क्रम में सभी 3 फाइलों के साथ प्रतिक्रिया करेगा और संक्षिप्त किया जाएगा।
पेट्र अर्बन

13

एक नई स्टाइलशीट को शीर्ष पर ले जा सकता है $routeProvider। सादगी के लिए एक स्ट्रिंग का उपयोग कर रहा हूं, लेकिन नए लिंक तत्व भी बना सकता है, या स्टाइलशीट के लिए एक सेवा बना सकता है

/* check if already exists first - note ID used on link element*/
/* could also track within scope object*/
if( !angular.element('link#myViewName').length){
    angular.element('head').append('<link id="myViewName" href="myViewName.css" rel="stylesheet">');
}

पृष्ठ में प्रीलाडिंग का सबसे बड़ा लाभ यह है कि कोई भी पृष्ठभूमि चित्र पहले से मौजूद होगा, और कम स्तर का होगा FOUC


यह सिर्फ सहित के रूप में इसी कार्य को पूरा नहीं होता <link>में <head>index.html की स्थिर हालांकि,?
ब्रैंडन

यदि whenमार्ग के लिए नहीं बुलाया गया है। इस कोड को controllerकॉलबैक में , या शायद कॉलबैक के whenभीतर डाल सकता है routeProvider, resolveजो जल्दी ही ट्रिगर हो जाता है
charlietfl

ओह ठीक है, मेरा बुरा, कि नहीं क्लिक करता है। बहुत ठोस लग रहा है सिवाय आप यह बता सकते हैं कि अगर मैं इसे किसी भी तरह से इंजेक्ट कर रहा हूं तो इसका प्रीलोडिंग कैसे हो सकता है?
ब्रैंडन

1
यदि आप इसे संलग्न करते हैं, तो यह प्रीलोडिंग नहीं है routeprovider... यह टिप्पणी मुख्य पृष्ठ के प्रमुख पेज के सामने आने पर इसमें शामिल थी
charlietfl

-_- क्षमा करें, अगर आप नहीं बता सकते तो मुझे नींद की कमी है। वैसे भी, अब मैं कहाँ हूँ, इस तरह का। यह पता लगाने की कोशिश की जा रही है कि उपयोगकर्ता द्वारा दृश्य स्विच करने पर कुछ FOUC होने से बेहतर है कि एक बार में मेरे सभी स्टाइलशीट को लोड कर दिया जाए। मुझे लगता है कि यह वास्तव में एक कोणीय से संबंधित प्रश्न नहीं है जितना कि यह वेब ऐप यूएक्स के बारे में है। धन्यवाद, मैं शायद आपके सुझाव के साथ जाऊँगा अगर मैं प्रीलोडिंग नहीं करने का फैसला करता हूँ।
ब्रैंडन

5

@ sz3, मजाकिया तौर पर आज मुझे वही करना था जो आप हासिल करने की कोशिश कर रहे थे: ' एक विशिष्ट सीएसएस फ़ाइल को तभी लोड करें जब कोई उपयोगकर्ता किसी विशिष्ट पृष्ठ पर पहुंच जाए। ' इसलिए मैंने ऊपर के समाधान का उपयोग किया।

लेकिन मैं यहां आपके आखिरी सवाल का जवाब देने के लिए हूं: ' जहां मुझे कोड डालना चाहिए। कोई विचार ? '

आप संकल्प में कोड सहित सही थे , लेकिन आपको थोड़ा प्रारूप बदलने की आवश्यकता है।

नीचे दिए गए कोड पर एक नज़र डालें:

.when('/home', {
  title:'Home - ' + siteName,
  bodyClass: 'home',
  templateUrl: function(params) {
    return 'views/home.html';
  },
  controler: 'homeCtrl',
  resolve: {
    style : function(){
      /* check if already exists first - note ID used on link element*/
      /* could also track within scope object*/
      if( !angular.element('link#mobile').length){
        angular.element('head').append('<link id="home" href="home.css" rel="stylesheet">');
      }
    }
  }
})

मैंने अभी-अभी परीक्षण किया है और यह ठीक काम कर रहा है , यह html को इंजेक्ट करता है और यह मेरे 'home.css' को तभी लोड करता है जब मैं '/ home' मार्ग पर हिट करता हूं।

पूर्ण विवरण यहां पाया जा सकता है , लेकिन मूल रूप से हल: प्रारूप में एक ऑब्जेक्ट मिलना चाहिए

{
  'key' : string or function()
} 

आप ' कुंजी ' को कुछ भी नाम दे सकते हैं - जैसे कि मेरे मामले में मैंने ' शैली ' कहा था ।

फिर मूल्य के लिए आपके पास दो विकल्प हैं:

  • यदि यह एक स्ट्रिंग है , तो यह एक सेवा के लिए एक उपनाम है।

  • यदि यह कार्य करता है , तो इसे इंजेक्ट किया जाता है और वापसी मूल्य को निर्भरता के रूप में माना जाता है।

यहां मुख्य बिंदु यह है कि फ़ंक्शन के अंदर कोड को नियंत्रक द्वारा त्वरित करने से पहले निष्पादित किया जाना है और $ मार्ग परिवर्तन घटना को निकाल दिया गया है।

उम्मीद है की वो मदद करदे।


2

बहुत बढ़िया धन्यवाद!! बस इसे ui- राउटर के साथ काम करने के लिए कुछ समायोजन करना था:

    var app = app || angular.module('app', []);

    app.directive('head', ['$rootScope', '$compile', '$state', function ($rootScope, $compile, $state) {

    return {
        restrict: 'E',
        link: function ($scope, elem, attrs, ctrls) {

            var html = '<link rel="stylesheet" ng-repeat="(routeCtrl, cssUrl) in routeStyles" ng-href="{{cssUrl}}" />';
            var el = $compile(html)($scope)
            elem.append(el);
            $scope.routeStyles = {};

            function applyStyles(state, action) {
                var sheets = state ? state.css : null;
                if (state.parent) {
                    var parentState = $state.get(state.parent)
                    applyStyles(parentState, action);
                }
                if (sheets) {
                    if (!Array.isArray(sheets)) {
                        sheets = [sheets];
                    }
                    angular.forEach(sheets, function (sheet) {
                        action(sheet);
                    });
                }
            }

            $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {

                applyStyles(fromState, function(sheet) {
                    delete $scope.routeStyles[sheet];
                    console.log('>> remove >> ', sheet);
                });

                applyStyles(toState, function(sheet) {
                    $scope.routeStyles[sheet] = sheet;
                    console.log('>> add >> ', sheet);
                });
            });
        }
    }
}]);

मुझे हटाने और जोड़ने की बिल्कुल ज़रूरत नहीं थी क्योंकि मेरी सीएसएस को गड़बड़ कर दिया गया था, लेकिन यह यूआई-राउटर के लिए बहुत मददगार था! धन्यवाद :)
imsheth

1

यदि आपको केवल एक विशिष्ट दृश्य पर अपने CSS को लागू करने की आवश्यकता है, तो मैं अपने नियंत्रक के अंदर इस आसान स्निपेट का उपयोग कर रहा हूं:

$("body").addClass("mystate");

$scope.$on("$destroy", function() {
  $("body").removeClass("mystate"); 
});

bodyजब राज्य लोड होता है, तो यह मेरे टैग में एक वर्ग जोड़ देगा और राज्य के नष्ट हो जाने पर इसे हटा देगा (अर्थात कोई पृष्ठ बदलता है)। यह मेरी जरूरत की संबंधित समस्या को हल करता है कि सीएसएस को मेरे आवेदन में एक राज्य में लागू किया जाना चाहिए।


0

'सख्त का उपयोग करें'; angular.module ('app') .run (['$ rootScope', '$ state', '$ StateParams', function ($ rootScope, $ State, $ StateParams) {$ rootccope। {$ root_cope; $ state = $ state; $ rootScope । $ StateParams = $ StateParams;}]) .config (['$ StateProvider', '$ urlRouterProvider', फंक्शन ($ StateProvider, $ urlRouterProvider) {

            $urlRouterProvider
                .otherwise('/app/dashboard');
            $stateProvider
                .state('app', {
                    abstract: true,
                    url: '/app',
                    templateUrl: 'views/layout.html'
                })
                .state('app.dashboard', {
                    url: '/dashboard',
                    templateUrl: 'views/dashboard.html',
                    ncyBreadcrumb: {
                        label: 'Dashboard',
                        description: ''
                    },
                    resolve: {
                        deps: [
                            '$ocLazyLoad',
                            function($ocLazyLoad) {
                                return $ocLazyLoad.load({
                                    serie: true,
                                    files: [
                                        'lib/jquery/charts/sparkline/jquery.sparkline.js',
                                        'lib/jquery/charts/easypiechart/jquery.easypiechart.js',
                                        'lib/jquery/charts/flot/jquery.flot.js',
                                        'lib/jquery/charts/flot/jquery.flot.resize.js',
                                        'lib/jquery/charts/flot/jquery.flot.pie.js',
                                        'lib/jquery/charts/flot/jquery.flot.tooltip.js',
                                        'lib/jquery/charts/flot/jquery.flot.orderBars.js',
                                        'app/controllers/dashboard.js',
                                        'app/directives/realtimechart.js'
                                    ]
                                });
                            }
                        ]
                    }
                })
                .state('ram', {
                    abstract: true,
                    url: '/ram',
                    templateUrl: 'views/layout-ram.html'
                })
                .state('ram.dashboard', {
                    url: '/dashboard',
                    templateUrl: 'views/dashboard-ram.html',
                    ncyBreadcrumb: {
                        label: 'test'
                    },
                    resolve: {
                        deps: [
                            '$ocLazyLoad',
                            function($ocLazyLoad) {
                                return $ocLazyLoad.load({
                                    serie: true,
                                    files: [
                                        'lib/jquery/charts/sparkline/jquery.sparkline.js',
                                        'lib/jquery/charts/easypiechart/jquery.easypiechart.js',
                                        'lib/jquery/charts/flot/jquery.flot.js',
                                        'lib/jquery/charts/flot/jquery.flot.resize.js',
                                        'lib/jquery/charts/flot/jquery.flot.pie.js',
                                        'lib/jquery/charts/flot/jquery.flot.tooltip.js',
                                        'lib/jquery/charts/flot/jquery.flot.orderBars.js',
                                        'app/controllers/dashboard.js',
                                        'app/directives/realtimechart.js'
                                    ]
                                });
                            }
                        ]
                    }
                })
                 );

बिना किसी संदर्भ के एक साधारण कोड उदाहरण शायद ही कभी किसी प्रश्न का पर्याप्त उत्तर होता है। इसके अलावा, इस सवाल का पहले से ही एक बहुत ही स्वीकृत उत्तर है।
एजे एक्स।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.