2013-12-05 1 views
0

Я могу успешно использовать динамические маршруты. Мне также хотелось бы НЕ отделить функциональность CRUD в моих разных контроллерах (т. Е. Сохранить CRUD в одном контроллере на объект).AngularJs - Динамические маршруты с Crud в 1 контроллере

За этот вопрос, я изменил мои маршруты Using same controller for all CRUD operations (Rails-alike) путем добавления решительность по рекомендации Стьюи в:


Я понял это, но ТАК не позволит мне опубликовать решение ниже так что вот оно:


1. Маршруты

angular.module ('anuRoutes', [])

.config(['$routeProvider', function($routeProvider) { 
    $routeProvider.when('/', { templateUrl: '/App_Angular/partials/Common/Welcome.html' }); 
    $routeProvider.when('/:name', { 
     templateUrl: '/App_Angular/partials/Common/Welcome.html', 
     controller: PagesCtrl, 
     action: 'list' 
    }); 
    $routeProvider.when('/:name/:id', { 
     templateUrl: '/App_Angular/partials/Common/Welcome.html', 
     controller: PagesCtrl, 
     action: 'show' 
    }); 
    $routeProvider.when('/:name/new', { 
     templateUrl: '/App_Angular/partials/Common/Welcome.html', 
     controller: PagesCtrl, 
     action: 'new' 
    }); 
    $routeProvider.when('/:name/:id/edit', { 
     templateUrl: '/App_Angular/partials/Common/Welcome.html', 
     controller: PagesCtrl, 
     action: 'edit' 
    }); 
    $routeProvider.otherwise({ redirectTo: '/App_Angular/partials/Common/Welcome.html' }); 
}]); 

2. Страницы контроллера:

функция PagesCtrl ($ сфера, $ HTTP, $ маршрут, $ routeParams, $ compile, anuCache) {

var pageName = ($routeParams.name).replace("_", "/"); 
console.log('name:' + pageName); 
$route.current.templateUrl = '/App_Angular/partials/' + pageName + ".html"; 

});

3. Пассажир Контроллер:

angular.module ('anuPassengerVehicles', [])

.контроллер ('PassengerVehiclesCtrl', функция ($ сфера, $ таймаут, PassVehSvc, $ маршрут) {

$scope.ControllerName = "PassengerVehiclesCtrl"; 
$scope.PassVehs = []; 

var crudAction = $route.current.action; 

if(crudAction === 'list'){ 
    PassVehSvc.GetPassVehs(). 
    then(function(config, data, headers, status) { 
    $scope.PassVehs = arguments[0].data; 
    // console.log(arguments[0].data); 
    } 

if(crudAction === 'edit'){ 
    ..... 
    } 

if(crudAction === 'new'){ 
    ..... 
    } 

if(crudAction === 'show'){ 
    ..... 
    } 

}); 

ответ

0

Ошибка [$ Инжектор: unpr] выглядит для меня как мой (свежие ошибки): «Ошибка: [$ инжектор: unpr] Неизвестный поставщик: $ scopeProvider < - $ сфера < - usersFactory»


есть несколько причин, которые могут генерировать такую ​​ошибку:

1) нет приложения Инициализация (нг-приложение) в HTML документе

2) или удвоение инициализации (нг-приложение)

<html ng-app> 
<div id="cartView" ng-app="myApp" ng-controller="CartCtrl"> 

3) иногда может переопределить модуль в двух местах, например, код, как это в один раз, выполнив:

angular.module ('MyService' ... 
). factory (...); 

затем немного вниз тот же файл

angular.module ('MyService' ... 
.) value ('version', '0 .1 '); 

4) иногда добавляют $ объем - и не должны

Мой BAD синтаксис:

myControllers.factory('usersFactory', ['$http','$scope', function($scope,$http){...} 

РАБОЧАЯ:

myControllers.factory('usersFactory', ['$http',function($scope,$http){...} 

5) Еще один сюрприз: пробелы в значениях массива:

controller('myCtrl', ['$scope', '$timeout ' (...) 

Дополнительная информация: this post

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