2015-12-15 29 views
6

मुझे अभी तक सभ्य दस्तावेज नहीं मिला है कि कैसे कोणीय 1.x से ऑरेलिया में माइग्रेट करना है। अब तक, मैंने केवल लोगों को यह देखा है कि एंगुलर directive की अवधारणा को @customElement का उपयोग करके ऑरेलिया में रीमेड किया जा सकता है। ठीक है, काफी सरल है। लेकिन इन उदाहरणों हमेशा, हमेशा नकली डेटा।ऑरेलिया में कोणीय सेवा?

जिसके अनुसार, कोणीय सेवाएं एकमात्र है कि किसी भी नियंत्रक/निर्देश/सेवा में इंजेक्ट किया जा सकता है, और आम तौर पर एक सर्वर से डेटा फ़ेच लिए अनुमति देता है (अर्थात PersonService, OrdersService)।

लेकिन ये data services ऑरेलिया में मॉडलिंग कैसे हैं? क्या सब कुछ सिर्फ एक वर्ग है? यह seems like it है।

अनिवार्य रूप से, मुझे कुछ कोड नमूने, hello-world देखना होगा, जो प्रभावी रूप से किसी सेवा से डेटा प्राप्त करता है, और इसे @customElement पर प्रदान करता है। HTTP कॉल कहां जाते हैं? हम HTTP कॉल कैसे करते हैं? कोणीय $http का उपयोग करता है, ऑरेलिया के बारे में क्या?

संपादित:

यहाँ एक सरल कोणीय सेवा है। ऑरेलिया में इस पर हमला कैसे होगा?

app.service('SomeDataService', function() { 
    return { 
     getMyData: function (options) { 
      return $.ajax(options); 
     } 
    } 
}); 
+0

कुछ कोणीय 'नमस्ते-world' कोड चोट नहीं होगा, मुझे लगता है । सवाल वर्तमान स्थिति में बहुत अस्पष्ट दिखता है। – estus

+0

मैंने एक साधारण कोणीय सेवा शामिल करने के उत्तर को अपडेट किया जो $ .ajax के साथ डेटा प्राप्त करता है। आश्चर्य की बात है कि यह ऑरेलिया में कैसे नकल की जाएगी। – lux

उत्तर

9

हाँ-सादा ES6/ES7 कक्षाएं। आपकी डेटा सेवाओं में कोई ढांचा घुसपैठ नहीं है।

मेरी-डेटा-service.js

import {HttpClient} from 'aurelia-http-client'; // or 'aurelia-fetch-client' if you want to use fetch 
import {inject} from 'aurelia-framework'; 

@inject(HttpClient) 
export class MyDataService { 
    constructor(http) { 
    this.http = http; 
    } 

    getMyData() { 
    return this.http.get(someUrl); 
    } 
} 

फैंसी-कस्टम element.js

import {MyDataService} from './my-data-service'; 
import {inject} from 'aurelia-framework'; 

@inject(MyDataService) // aurelia's dependency injection container will inject the same MyDataService instance into each instance of FancyCustomElement 
export class FancyCustomElement { 
    data = null; 

    constructor(dataService) { 
    this.dataService = dataService; 
    } 

    // perhaps a button click is bound to this method: 
    loadTheData() { 
    this.dataService.getMyData() 
     .then(data => this.data = data); 
    } 
} 
+0

धन्यवाद, यह बहुत अच्छा लग रहा है। मेरे पास 'fancy-custom-element.js' में' import' के बारे में एक प्रश्न है। सबसे पहले, हम 'MyDataService' आयात करते हैं, फिर हम' इंजेक्ट 'आयात करते हैं। थोड़ा अनावश्यक लगता है, नहीं? अगर मैं एक सेवा आयात करता हूं, संभावना है कि मैं इसे इंजेक्ट करना चाहता हूं। क्या कभी ऐसा समय होगा जब मैं सेवा आयात करना चाहता हूं, लेकिन इसे इंजेक्ट नहीं करता? एक परिदृश्य के बारे में सोचने की कोशिश कर रहा है ... – lux

+0

अच्छा सवाल, प्रैक्टिस में अक्सर आयात का एक गुच्छा होता है, कई स्थिर वस्तुएं हैं जैसे 'पल' से आयात पल; '। यह मानना ​​असुरक्षित होगा कि सभी आयातों को कन्स्ट्रक्टर में इंजेक्शन देने की आवश्यकता है। विशेष रूप से यदि आपके पास एक ही फ़ाइल में एकाधिक श्रेणी के निर्यात होते हैं। यदि आप टाइपस्क्रिप्ट का उपयोग करना चाहते थे तो आप '@inject (MyDataService) 'को' @autoInject()' के साथ बदल सकते हैं और ऑरेलिया टाइपस्क्रिप्ट ट्रांसलेटर द्वारा उत्सर्जित मेटाडेटा का उपयोग करके कन्स्ट्रक्टर के तर्कों की खोज करेगा। –

+0

धन्यवाद - यह समझ में आता है, खासतौर पर पल या कुछ ऐसा आयात करने के संदर्भ में। एक बार फिर धन्यवाद! – lux

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