2015-02-07 9 views
6

में मैं "jQuery" भूलना चाहता हूं क्योंकि मुझे "AngularJS" पसंद है। हालांकि, मुझे यह जानने की जरूरत है कि स्वतंत्र कार्यों का उपयोग कैसे किया जाए जो मेरे आवेदन में एंगुलरजेएस को कहीं और शामिल करते हैं। इस अवसर पर मैं उदाहरण के लिए एक जावास्क्रिप्ट फ़ाइल आयात करने के लिए "$ https AngularJS" फ़ंक्शन का उपयोग करना चाहता हूं।

उदाहरण (यह jQueryमें करने के लिए प्रयोग किया जाता):

$.get("url.js", function(data){ eval(data) }); //ok 
console.info($.get); //code code code... ok 

उदाहरण

//In a controller 
App.controller('Ctrllr', ['$http', function ($http) { 
    $http.get("url.js").success(function(data){ 
     eval(data); //ok 
    }); 
    console.info($http); //code code code.... ok 
}) 

//outside 
$http.get("url.js"); //$http is undefined 
//How to use $http here? 

आप आखिरी कॉल में देखते हैं के रूप में (के रूप में AngularJS में दस्तावेज), $ है http एक प्रक्रिया के बाहर। अब, जानना चाहते हैं, कक्षा $ http या किसी अन्य कोणीय utils का उपयोग नियंत्रक/अनुप्रयोग के बाहर कैसे करें?

+0

क्या आप बाहर से क्या मतलब है? एक नियंत्रक लोड होने से पहले? किस घटना पर कोणीय संदर्भ से संबंधित है? – micha

+0

एक नियंत्रक लोड होने से पहले –

+0

प्रदान किए गए उत्तरों को आपके अनुरोध को पूरा नहीं करते हैं? – ribsies

उत्तर

0

आप ऐसा नहीं कर सकते हैं। लेकिन यह ठीक है, आपको नहीं करना चाहिए।

आपको क्या करना चाहिए एक कारखाने का उपयोग करके एक सेवा स्थापित करना है जिसे तब आपके नियंत्रकों या जो कुछ भी आप चाहते हैं, तक पहुंचा जा सकता है। एक कारखाना इस तरह दिखता है ...

app.factory('service', ['$http', function($http) { 
    var service = {} 

    service.get = function() { 
    return $http.get('/url'); 
    } 
    return service. 
}]); 

तो फिर तुम कुछ भी आप चाहते हैं में इस सेवा इंजेक्षन कर सकते हैं और वहाँ से प्राप्त समारोह कॉल कर सकते हैं जो आपके लिए वादा वापस आ जाएगी।

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

+0

डाउनवोट के साथ क्या है? – ribsies

+0

क्योंकि आप ऐसा कर सकते हैं, जबकि हाँ, आपको नहीं करना चाहिए। एक हास्यास्पद सेवा तक पहुंचने के लिए एक फैक्ट्री भी बना रही है। अगली बार अपने प्रश्न पढ़ें। –

+0

अच्छी सलाह, आपको इसे भी पढ़ना चाहिए! जिस तरह से उन्होंने लिखा, यह संभव नहीं है। आप किसी कोणीय नियंत्रक के बाहर किसी प्रकार की http सेवा का उपयोग कर सकते हैं, लेकिन ऐसा नहीं। मुझे नहीं लगता कि हास्यास्पद शब्द वह शब्द है जिसे आप ढूंढ रहे हैं। ऐसा करने का यह मानक तरीका है, यह मॉड्यूलर और साफ/व्यवस्थित बनाता है। – ribsies

4

निश्चित रूप से आप एक run block

angular.module('myModule', []) 
.run(function($http) {$http.get('/url').success(mySuccessCallback)} 

भीतर $ http उपयोग कर सकते हैं लेकिन आप अभी भी कोणीय संदर्भ (आवेदन) में $http उपयोग करने के लिए क्योंकि निर्भरता इंजेक्शन $http सेवा

1

आप सभी को धन्यवाद इंजेक्षन करने के लिए आवश्यक है, मुझे लगता है कि एकमात्र समाधान वैश्विक वैरिएबल घोषित करना होगा और उसके बाद इस चर

var myAjax; 
App.controller('Ctrllr', ['$http', function ($http) { 
    myAjax = $http; 
}); 

myAjax("url.js").success(function(code){eval(code)} 
के लिए नियंत्रक $ https असाइन करना होगा

यदि किसी के पास बेहतर समाधान है तो आपका स्वागत है। एक ग्रीटिंग :)

3

इस का उपयोग करें:

$http = angular.injector(["ng"]).get("$http"); 
संबंधित मुद्दे