2015-02-09 150 views
2

試圖找出一種'角度特定'的方式來嘗試和實現這一點。 我有一個頁面有一些意見。當用戶點擊一個錨點時,視圖會改變,我已經工作得很好。

我很好奇的是,如果當用戶點擊時,是否可以存儲一個變量(比如內部html),然後將它傳遞給$routeProvider以更加動態地加載視圖?因此,對於定位標記#name1

顯示該視圖時,我可以通過name1nameHolder作爲變量加載具有相同名稱的一些文件。

HTML

<script type="text/ng-template" id="this.html">  
    This Page. 
</script> 
<script type="text/ng-template" id="that.html"> 
    That Page. 
</script> 

<div> 
    <ul> 
    <li><a href="#/this">this</a></li> 
    <li><a href="#/that">that</a></li> 
    </ul> 
    <ng-view></ng-view> 
</div> 

JS

var nameHolder= []; 

var app = angular.module("myApp", ['ngRoute']); 

app.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/' + nameHolder, { 
     templateUrl: nameHolder + ".html", 
     controller: 'individ', 
     nameofuser: nameHolder 
    }). 
     when('/', { 
     templateUrl: 'this.html' 
    }); 
}]); 

app.controller('individ', function($scope, $route) { 
    $scope.img = $route.current.nameofuser; 
}); 

$(document).ready(function(){ 
    $('a').click(function(){ 
    nameHolder.length = 0; 
    var pushThis = $(this).text(); 
    nameHolder.push(pushThis); 
    console.log(nameHolder) 
    }); 
}); 

感謝任何信息。

這裏有一個JSFiddle

回答

5

可以使用功能templateUrl動態構造URL。此功能接受路由參數的對象:

$routeProvider. 
    when('/:nameHolder', { 
     templateUrl: function(params) { 
      return params.nameHolder + ".html"; 
     }, 
     controller: 'individ', 
     nameofuser: nameHolder 
}). 
+0

真棒解決方案,謝謝。用你的代碼更新工作小提琴。我沒有意識到我可以通過'templateUrl'傳遞一個函數。 http://jsfiddle.net/GregWebBandit/rdko8qqs/9/ – gregdevs 2015-02-09 18:43:47

+0

重新使用「this.html」tpl。 http://jsfiddle.net/GregWebBandit/rdko8qqs/11/ – gregdevs 2015-02-09 19:49:07