2014-08-27 3 views
0

Я действительно новым для угловых и читал ряд учебных пособий и т.д., и следующая проблема:

поиск-module.js

var Search = angular.module('SearchApp',["ngCookies","ngRoute"]); 

Search.run(function ($http, $cookies) { 
    $http.defaults.headers.common['X-CSRFToken'] = $cookies['csrftoken']; 
}); 

Search.config(function($routeProvider){ 
    $routeProvider 
     .when('/', { 
      controller:'searchCtrl', 
      resolve: { 
       inv_items: function (InventoryService){ 
        return InventoryService.get('red'); 
       } 
      } 
     }) 
     .otherwise({ 
      redirectTo: '/' 
     }) 
}); 

данных service.js

Search.factory('InventoryService', function ($http, $q) { 

    var api_url = "api/inventory/"; 

    return { 

     get: function (inventory) { 
      var url = api_url + inventory; 
      var defer = $q.defer(); 
      $http({method: 'GET', url: url}). 
       success(function (data, status, headers, config){ 
        defer.resolver(data); 
       }) 
       .error(function (data,status, headers, config){ 
        defer.reject(status); 
       }); 
      return defer.promise; 
     } 
    } 
}); 

поиск-controller.js

Search.controller('searchCtrl', function($scope){ 

    $scope.selected = 'have'; 

    $scope.setSection = function(section){ 
     $scope.selected = section; 
    }; 

    $scope.isSelected = function(section){ 
     return $scope.selected == section; 
    }; 

}); 

Как я уже упоминал ранее, я действительно новичок в угловой, просто поднял его вчера. В основном из того, что я написал, я понимаю, что, когда URL-адрес «/», служба будет инициирована и контроллер будет вызван? Я хочу знать, почему я не могу использовать inv_items в моем контроллере? Я получаю следующее error.

Должен ли я передать какой-то глобальный контроллер, который будет содержать inv_items или я пропущу какую-то важную часть знаний?

Спасибо!

ответ

0

Переменная разрешений 'inv_items' не добавляется автоматически в область 'searchCtrl'.

Search.controller('searchCtrl', function($scope, inv_items){ //Add this 
    $scope.inv_items = inv_items; //And this 
    $scope.selected = 'have'; 

    $scope.setSection = function(section){ 
     $scope.selected = section; 
    }; 

    $scope.isSelected = function(section){ 
     return $scope.selected == section; 
    }; 
}); 

Предоставлено, что остальная часть кода работает, теперь ваши «inv_items» должны быть доступны в этой области.

+0

Привет, поэтому я сначала попробовал это в своем коде и получил ошибку, которую я связал выше. Означает ли это, что в другой части кода есть ошибка? Если я опускаю inv_items из контроллера, в консоли не возникает ошибка. – Deep

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