2016-10-01 44 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框架,它是利用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

你可以在quesetion中向我展示一個帶有routeParams的工作示例嗎?例如,可能是:*/blue /:id「,然後在控制器定義中獲取參數。 – Fallenreaper