2015-05-27 3 views
-1

У меня возникла ошибка, когда я объявляю переменную, чтобы получить элемент из моих данных json-файла вне моей функции, кто-нибудь может объяснить мне, почему PLZ?

produit.json:

[{ 
"id" : 1, 
"reference": "AA" 
}, 
{ 
"id" : 2, 
"reference": "BB" 
}] 

angulars.js:

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

    app.controller('MainCtrl', function($scope,$http,$log) { 

    $http.get('produits.json').success(function (data) { 

     $scope.produits = data; 
     $scope.ref1= $scope.produits[0].reference; //OK 

    }); 

    $scope.ref1= $scope.produits[0].reference; //ERROR: undefined produits 
}); 

index.html:

<body ng-app="myApp"> 
    <div ng-controller="MainCtrl"> 
     Reférence 1 : {{ ref1 }}  // ERROR 
    </div> 

</body> 
+0

Это дает вашу ошибку, потому что вы вызываете $ scope из своего контроллера там, где он определен. Вам следует просто удалить этот вызов или, если вы хотите получить доступ к ref1 из другого контроллера/скрипта/директивы, определяя сервис, который получает его для вашего (фабрика должна быть в порядке). – AndreaM16

+0

большое спасибо;) – carine

+0

Дайте мне знать, если вы решите с ним или вам нужна другая помощь. – AndreaM16

ответ

1

До результатов возвратов услуг, $scope.produits еще не определена. И даже если бы это было так, тогда у него не было бы элемента [0].

Так я думаю, что лучше всего было бы не добавить последнюю строку вашего кода и просто ждать, пока служба возвращать результаты:

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

    app.controller('MainCtrl', function($scope,$http,$log) { 

     $http.get('produits.json').success(function (data) { 

      $scope.produits = data; 
      $scope.ref1= $scope.produits[0].reference; //OK 

    }); 


}); 
+0

спасибо, мне нужно вызвать на мою страницу html, что: {{produit [{{refSelected}}]. Reference}} refSelected - это переменная в моей модели, она меняет вид! как я могу это сделать? – carine

+0

Он покажет, когда вы получите ответ от вашего запроса на получение. –

+0

да, я имею в виду {{produit [{{refSelected}}] .reference не работает! – carine

0

код, над которым вы написали делает асинхронный вызов , т. е. когда вы делаете HTTP-вызов, требуется некоторое время, чтобы получить ответ, но код javascript продолжает работать, поэтому до тех пор, пока ответ не будет возвращен, обратный вызов успеха не был вызван, в результате ваш объем $. productions не определен до этого момента

+0

благодарю вас за ответ, но какое-либо решение сделать это другим способом PLZ? – carine

Смежные вопросы