2017-01-13 14 views
5

Şu anda AngularJS'de bir eğiticiyi takip ediyorum. Bu, controllers.js dosyasındaki kod.

'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; 
    }); 
}); 

Ben şu hataları alıyorum: url

1) Engellenen yükleme kaynak değil $ sceDelegate politikası tarafından izin verdi.

2) TypeError:. ErgastAPIservice.getDrivers (...) başarı bu hatalara neden ne olabilir hiç Özellikle emin değilim bir işlev

değil, ben Açısal çok yeniyim. (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; 
}); 

fark ettik farklılıklar mayın bir virgül ile olduğu gibidir: benim ve diğer örnekler arasında gördüğümüz mümkündür fark kod bloğu içinde olmasıdır getDrivers işlevinin sonu ve dosyanın en üstünde use strict deyim var. Ancak, hile, bu satırların her ikisini de kullanmadan uygulamayı reddediyor, bu yüzden sorun olabileceğini düşünmüyorum.

Burada herhangi biri bana doğru yönde işaret ederse çok minnettar olurdum.

cevap

8

Sayı 1.: Eğer uygulamasından istemek için çalışıyoruz

url Angulars sceDelegatePolicy göre güvenli değildir. aşağıda gösterildiği şekilde çözmek için, $sceDelegateProvider yılında resourceUrlWhitelist yöntemi kullanarak app url beyaz listeye almak gerekir: here

den

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

net bir açıklama için ve örnek üzerindedir Sorun # 2:

TypeError: ergastAPIservice.getDrivers(...).success is not a function numaralı hatayla ilgili sorun Kullanmakta olduğunuz AngularJS sürümü nedeniyle olabilir. Eski .success/.error yöntemlerinin şimdi en son AngularJs sürüm 1.6'da kullanımdan kaldırılmıştır. Deprecation notice İşte en son AngularJs kullanıyorsanız, bunun nedeni olabilir, aksi takdirde, biz sorunu ayıklamak için daha fazla bilgiye ihtiyacımız var.

İlgili konular