2016-04-04 18 views
0

Bir yönerge kullanarak veri alıyorum ve bir kapsam değişkeni 'hizmetler' oluşturuyorum, ancak görünümde görünmüyor ve denetleyicide 'tanımsız'. Verilerin gösterilmesinin en iyi yolu nedir?Kapsam değişkeni neden görünümde veya denetleyicide gösterilen yönerge kapsamında tanımlanmıyor?

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

app.directive('myTag', ['$http', function($http, $scope) { 

    //http://apidocs.bookingbug.com/public.html#!/company/get_company_company_id 
    return { 
     restrict: 'E', 
     transclude: true, 
     replace: true,  
    scope:{ 
     src:"="  
    }, 
    controller:function($scope, $attrs){ 
     console.info("enter directive controller"); 

     $http({ 
      method: 'GET', 
      url:$scope.src, 
      headers: { 
       'App-Id': '5a3d8b8d', 
       'App-Key': '738e9aca62e7465446b7be8fe4219ffa' 
      } 
     }).then(function (result) { 
      console.log(result);        
      console.log(result.data._embedded.services);        

      var states = result.data._embedded.services; 
      var services = []; 
      angular.forEach(states, function (state) { 
       var service = { 
        'description':state.description, 
        'name':state.name, 
        'prices':state.prices[0] 
       } 

       services.push(service) 
      });  
      $scope.services = services; 

      console.log($scope); 
      console.log($scope.services); //This shows correctly - array of objects. 

     }, function (result) { 
      alert("Error: No data returned"); 
     }); 
    } 
    } 
}]).controller('MainController', function ($scope) {   
      console.log($scope.services); //This shows undefined 

}); 

html:

<ul class="the-results"> 
    <li ng-repeat="service in services"> 
     <a href="#" id="{{ $index + 1 }}">{{ service.name }}</a>, {{ service.description }} 
    </li> 
    </ul> 

<my-tag src="'https://uk.bookingbug.com/api/v1/41285/services'"></my-tag> 

cevap

1

Eğer yönergede bu denediniz mi?

$scope.$parent.services = services; 

Ve sonra denetleyicisi

:

console.log($scope.services); 

o yardımcı olabilir umuyoruz.

+0

Harikasınız. Üzgünüm, açısal olarak yeniyim. Yani bir direktif bir kontrolörün çocuğu mu? Yeşil işareti için biraz açıklayabilir misin? – Squirrl

+1

Evet, bir yönerge tam olarak bir denetleyicinin çocuğu. Böylece her $ scope.controllerVars'a $ kapsamına erişebilirsiniz. $ Parent.controllerVars yönergelerinizde – Sparw

+0

Sadece kayıt için 'console.log ($ scope.services);' görünüm hala olsa ilk ve tanımsız gösterir doldurulur. Denetleyicide bazı işlevler çalıştırmak istediğimde, örneğin $ scope.services.description = $ scope.services.description.toUpperCase() 'Hala bir hatayla karşılaşıyorum. – Squirrl