2014-10-30 203 views
0

我將作爲我的Angular應用程序的模板,所以我的應用程序目錄結構非常漂亮整齊,可以讓您瞭解我的項目是如何構建的。我在我的應用程序中有兩條路線,一條叫做'main',另一條'sub'。將視圖中的值傳遞給AngularJS中的控制器

當我在我的'主'視圖中,我有一個鏈接,然後將用戶轉發到'sub'視圖。我怎樣才能通過我的'主'視圖的鏈接將簡單的值傳遞給'sub'控制器?

即我的鏈接是一個標準的HTML鏈接:

<a href="/#/sub">Go to sub</a> 

當你打了sub.js控制器可以將某些數據添加到$範圍爲副視點等。我想在從「主」視圖......希望是有道理通過了「子」訪問控制器中的價值..

回答

2

從我的理解你基本上想要在兩個控制器之間進行通信。
第一個本能可能是創建一個父範圍並將數據綁定到它,但有一個更好的方法,一個服務。

您將數據綁定到這個服務,它可以作爲您的控制器之間的信使,像這樣:

angular.module('app', []) 

    .factory('Data', dataService) 

    .controller('firstController', firstController) 
    .controller('secondController', secondController); 

function dataService() { 
    return { message: "I'm data from a service" }; 
} 

function firstController($scope, Data) { 
    $scope.data = Data; 
} 

function secondController($scope, Data) { 
    $scope.data = Data; 
} 

和標記:

<h2>First controller</h2> 
<div ng-controller="firstController"> 
    <input type="text" ng-model=data.message /> 
    {{ data.message }} 
</div> 

<h2>Second controller</h2> 
<div ng-controller="secondController"> 
    <input type="text" ng-model=data.message /> 
    {{ data.message }}       
</div> 

Demo Explained very good at egghead.io

1

綁定變量dataToFoward這是mainCtrl

<a ng-href="#/sub/{{dataToFoward}}">Go to sub</a> 
一個$ scope變量

在路線,

when("/sub/:sampleData", {templateUrl: "pathToTemplate" }). 
在副控制器

app.controller('subCtrl', function($routeParams,$scope) { 
    $scope.fromMain = $routeParams.sampleData; 
}); 
+0

在鏈接,我必須使用'ng-href'還是正常的'href'也好? – Tiwaz89 2014-10-30 10:37:02

+1

它很好地使用'ng-href',因爲**可能是**'$ scope.dataToFoward'變量在您點擊鏈接時未在控制器中設置。 – 2014-10-30 10:39:00

+0

如果在您點擊鏈接'href =「#/ sub/{{dataToFoward}}」'時未設置'$ scope.dataToFoward'將導致'404'錯誤,但是'ng-href =「#/ sub/{{dataToFoward}}「'只在'dataToFoward'設置後才起鏈接作用,在'dataToFoward'設置之前它不會點擊。 – 2014-10-30 10:45:19

相關問題