2016-10-01 2 views
1

Я искал некоторые инструкции по выполнению угловой маршрутизации и передавал параметры в контроллер. Это то, что я сделал:routeParams не вводит в мой контроллер?

.controller("myController", ["$scope", "$routeParams", function($scope, $routeParams, Units, Tests){ 
    //Units and Tests are both factories i created to reference within this function. 
    var id = $routeParams.id; 
    console.log(id); 
}]); 

Когда я сделал это, она не смогла привнести «$ routeParams» в мое приложение.

Я посмотрел на файл angular.js, и это выглядит, как я бегу: @license AngularJS v1.5.3

Является ли этот способ не делать это уже не правильный путь? Я попытался обновить его до:

.controller("myController", ["$scope", "ngRoute", function($scope, ngRoute, Units, Tests){ 
    // ... 
}]); 

но это, казалось, тоже не правильно вводило.

Есть что-то, что мне не хватает?

В настоящее время я развиваюсь с помощью Ionic Framework, использующего инструменты AngularJS.

+0

'«ngRoute»' входит в ваше приложение модуля вызова, то есть 'angular.module («приложение» , ["ngRoute"]) ', вы включили его? –

+0

Можете ли вы поделиться URL-адресом приложения, когда этот контроллер находится в области видимости? – JLewkovich

+0

@PatrickEvans Я получил эту ошибку: * Модуль 'ngRoute' недоступен! Вы либо ошибочно написали имя модуля, либо забыли загрузить его. Если регистрация модуля гарантирует, что вы укажете зависимости в качестве второго аргумента. * – Fallenreaper

ответ

1

При работе с ионным, как указано в вопросе, вы подключаетесь к $stateProvider поэтому, когда вы создаете состояние, такое как:

$stateProvider 
    .state("unit", { 
    url: "/unit/:id", 
    templateUrl: "templates/unit.html", 
    controller: "UnitController" 
    }) 

Вы бы тогда в своем контроллере сделали:

.controller("myController", ["$scope", 
    "$stateParams", 
    function($scope, $stateParams, Units, Tests){ 
    var id = $stateParams.id; 
    console.log(id); 
}]); 

Это способ сделать это в ионического, так как задействует в $stateProvider над $routeProvider

0

Если вы хотите перейти на разные страницы своего приложения, но вы также хотите, чтобы приложение было SPA (Single Page Application), без перегрузки страницы, вы можете использовать модуль ngRoute.

Модуль ngRoute направляет ваше приложение на разные страницы без перезагрузки всего приложения.

var app = angular.module("myApp", ["ngRoute"]); 
app.config(function($routeProvider) { 
    $routeProvider 
    .when("/", { 
     templateUrl : "main.html" 
    }) 
    .when("/red", { 
     templateUrl : "red.html" 
    }) 
    .when("/green", { 
     templateUrl : "green.html" 
    }) 
    .when("/blue", { 
     templateUrl : "blue.html" 
    }); 
}); 

Вашему приложению требуется контейнер для размещения контента, предоставляемого маршрутизацией.

Этот контейнер является ng-view directive.

как этот

<div ng-view></div> 

Вы можете также определить контроллеры для каждого вида

var app = angular.module("myApp", ["ngRoute"]); 
app.config(function($routeProvider) { 
    $routeProvider 
    .when("/", { 
     templateUrl : "main.html" 
    }) 
    .when("/london", { 
     templateUrl : "test.html", 
     controller : "myController" 
    }) 

}); 
+0

Можете ли вы показать мне рабочий образец с routeParams, как задано в quesetion. Может быть: */blue /: id "например, а затем получить параметр в определении контроллера. – Fallenreaper

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