-3

Теперь у меня есть код в вопросе. controllers.js services.js

и получение этой ошибки. angular.js: 13642 Ошибка: [$ инжектор: unpr] http://errors.angularjs.org/1.5.6/ $ инжектор/unpr? P0 =% 24scopeProvider% 20% 3C-% 20% 24scope% 20% 3C-% 20CF at angular.js: 38 при угловых .js: 4501 на Object.d [как Get] (angular.js: 4654) на angular.js: 4506 на D (angular.js: 4654) при е (angular.js: 4678) на объекте .invoke (angular.js: 4700) на объекте $ получить (angular.js: 4547). на Object.invoke (angular.js: 4708) в angular.js: 4507

'use strict'; 
 
angular.module("carsApp") 
 
    .controller("carsController", ["$scope", "CF", 
 
    function($scope, CF) { 
 
     $scope.tab = 1; 
 
     $scope.filterTxt = ''; 
 
     $scope.showDetails = false; 
 
     $scope.cars = CF.getCars(); 
 
     $scope.selectMenu = function(setTab) { 
 
     $scope.tab = setTab; 
 
     if (setTab === 2) { 
 
      $scope.filterTxt = "BMW"; 
 
     } else if (setTab === 3) { 
 
      $scope.filterTxt = "HONDA"; 
 
     } else if (setTab === 4) { 
 
      $scope.filterTxt = "TOYOTA"; 
 
     } else { 
 
      $scope.filterTxt = ""; 
 
     } 
 
     } 
 
     $scope.isSelected = function(val) { 
 
     return ($scope.tab === val); 
 
     } 
 
     $scope.toggleDetails = function() { 
 
     $scope.showDetails = !$scope.showDetails; 
 
     } 
 
    } 
 
    ]);

//Sser 
 
angular.module("carsApp") 
 
    .factory("CF", function($scope) { 
 
    var carFact = {}; 
 
    $scope.cars = [{ 
 
     id: '1', 
 
     make: 'BMW', 
 
     name: 'BMW', 
 
     image: 'images/bmw/bmw1.png', 
 
     model: '2005', 
 
     price: '4500', 
 
     description: 'A very nice maintained car. Good road grip, no work required. Next inspection March 2017', 
 
     comment: '' 
 
    }, { 
 
     id: '2', 
 
     make: 'HONDA', 
 
     name: 'Civic', 
 
     image: 'images/honda/honda1.png', 
 
     model: '2016', 
 
     price: '25000', 
 
     description: 'Honda is a nice car. Good road grip, no work required. Next inspection March 2017', 
 
     comment: '' 
 
    }, ]; 
 
    carFact.getCars = function() { 
 
     return cars; 
 
    }; 
 

 
    carFact.getCar = function(index) { 
 
     return cars[index]; 
 
    }; 
 
    return carFact; 
 
    });

+2

Пожалуйста, включите код в вопрос. Было бы хорошо, если бы вы могли показать полное сообщение об ошибке (с unminified angular.js). – tasseKATT

+0

angular.js: 13642 Ошибка: [$ injector: unpr] http://errors.angularjs.org/1.5.6/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C -% 20CF на angular.js: 38 на angular.js: 4501 на Object.d [как Get] (angular.js: 4654) на angular.js: 4506 при г (angular.js: 4654) при е (angular.js: 4678) на Object.invoke (angular.js: 4700). на объект $ получить (angular.js: 4547) на Object.invoke (angular.js: 4708) на угловой .js: 4507 – Naeem

+0

Пожалуйста, не задавайте вопросы со скриншотами. Включите * фактический код * в вопрос. Кроме того, вы должны [изменить] вопрос, чтобы добавить свои сообщения об ошибках; Сообщения/код в комментариях не отформатированы, что затрудняет их интерпретацию. – Claies

ответ

0

A Factory Provider не имеет понятия переменной области действия, в том же смысле, что контроллер делает. При необходимости, другое значение может быть введен в этой фабрики - например .:

angular.module('carsApp', []) 
.value('topCarId','1') 
.factory('CF', ['topCarId',function(topCarId) { 
     //this factory provider can utilize topCarId 
}); 

Вот упрощенный пример, в котором пользователю предлагается выбрать автомобиль. Он использует ngOptions, чтобы добавить автомобили в список выбора, хотя, возможно, у вашего кода есть призывы к selectMenu() на кнопках или других элементах.

angular.module('carsApp', []) 
 
    .factory('CF', function() { 
 
    var cars = [{ 
 
     id: '1', 
 
     make: 'BMW', 
 
     name: 'BMW', 
 
     description: 'A very nice maintained car...' 
 
    }, { 
 
     id: '2', 
 
     make: 'Honda', 
 
     name: 'Civic', 
 
     description: 'Honda is a nice car...' 
 
    }, 
 
{ 
 
     id: '3', 
 
     make: 'Toyota', 
 
     name: 'Camry', 
 
     description: 'Toyota is a nice car...' 
 
    }]; 
 
    return { 
 
     getCars: function() { 
 
     return cars; 
 
     } 
 
    }; 
 
    }) 
 
    .controller('carsController', ['$scope', 'CF', 
 
    function($scope, CF) { 
 
     $scope.cars = CF.getCars(); 
 
     $scope.filterTxt = ''; 
 
     $scope.tab = 0; 
 
     $scope.car = {}; 
 
     $scope.selectMenu = function(setTab) { 
 
     $scope.tab = setTab; 
 
     $scope.filterTxt = $scope.car.make; 
 
     } 
 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="carsApp" ng-controller="carsController"> 
 
    Choose a car: <select ng-model="car" ng-options="car as car.name for car in cars track by car.id" ng-change="selectMenu(car.id)"></select> 
 
    
 
    <div>FilterTxt: <span ng-bind="filterTxt"></span></div> 
 
    <div>Tab: <span ng-bind="tab"></span></div> 
 
</div>