2017-01-13 10 views
5

द्वारा अनुमत नहीं है मैं वर्तमान में AngularJS में एक ट्यूटोरियल का अनुसरण कर रहा हूं। यह मेरे नियंत्रकों.जेएस फ़ाइल में कोड है।

'use strict'; 

angular.module ('F1FeederApp.controllers' , []         ) 
.controller ('driversController'  , function ($scope , ergastAPIservice) { 

    $scope.nameFilter = null; 
    $scope.driversList = []; 

    ergastAPIservice.getDrivers().success (function (response) { 
     $scope.driversList = response.MRData.StandingsTable.StandingsLists [ 0 ].DriverStandings; 
    }); 
}); 

मैं निम्नलिखित त्रुटियाँ हो रही है:

1) यूआरएल से अवरोधित लोड हो रहा है संसाधन $ sceDelegate नीति द्वारा अनुमति नहीं है।

2) लेखन त्रुटि:। ErgastAPIservice.getDrivers (...) सफलता एक समारोह

मैं विशेष रूप से यकीन नहीं है सब पर क्या इन त्रुटियों का कारण हो सकता नहीं है, मैं बहुत कोणीय के लिए नया हूँ। तभी संभव मतभेद मैं मेरा और अन्य उदाहरण के बीच देखा है है कोड के इस ब्लॉक में हैं कि: (services.js)

'use strict'; 

angular.module ('F1FeederApp.services' , []    ) 
.factory  ('ergastAPIservice'  , function ($http) { 

    var ergastAPI = {}; 

    ergastAPI.getDrivers = function() { 
     return $http ({ 
      method : 'JSONP' , 
      url : 'http://ergast.com/api/f1/2013/driverStandings.json?callback=JSON_CALLBACK' 
     }); 
    }; 

    return ergastAPI; 
}); 

मतभेद मैंने देखा है कर रहे हैं खान में वहाँ पर एक सेमी-कोलन है कि getDrivers फ़ंक्शन का अंत और मेरे पास फ़ाइल के शीर्ष पर use strict कथन भी है। हालांकि, ग्रंट उन दोनों लाइनों के बिना एप्लिकेशन चलाने से इंकार कर देता है, इसलिए मुझे नहीं लगता कि यह मुद्दा हो सकता है।

यदि कोई मुझे सही दिशा में इंगित कर सकता है, तो मैं बहुत आभारी हूं।

उत्तर

8

अंक # 1:

यूआरएल आप अपने अनुप्रयोग से अनुरोध करने के लिए कोशिश कर रहे हैं Angulars sceDelegatePolicy के अनुसार सुरक्षित नहीं है। इसे हल करने के लिए, आपको जिन्हें आप नीचे की जरूरत है $sceDelegateProvider में resourceUrlWhitelist विधि उपयोग करके आपके एप्लिकेशन में यूआरएल श्वेतसूची में:

angular.module('myApp', []).config(function($sceDelegateProvider) { 
$sceDelegateProvider.resourceUrlWhitelist([ 
    // Allow same origin resource loads. 
    'self', 
    // Allow loading from our assets domain. **. 
    'http://ergast.com/**' 
    ]); 

एक स्पष्ट विवरण के लिए और उपरोक्त उदाहरण here

से हैं समस्या # 2:

त्रुटि TypeError: ergastAPIservice.getDrivers(...).success is not a function सह के साथ समस्या uld AngularJS संस्करण के कारण हो जिसका आप उपयोग कर रहे हैं। विरासत .success/.error विधियों को अब नवीनतम AngularJs संस्करण 1.6 में बहिष्कृत कर दिया गया है। यहां Deprecation notice यदि आप नवीनतम AngularJs का उपयोग कर रहे हैं, तो यह कारण हो सकता है, अन्यथा, हमें इस मुद्दे को डीबग करने के लिए और जानकारी चाहिए।

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