2015-06-13 47 views
1

我想用一個函數映射每個路由,而不是控制器/模板。沒有模板/控制器組合的路由?

我只有1個頁面,只有在頁面上更改的項目是範圍變量。我寧願避免一個控制器和模板重新加載,我寧願只交換變量。

這可能與$ routeProvider?


道歉不夠明確,這裏有一個例子:

應用程序是一個模板,一個控制器ThreadCtrl

app.controller("ThreadCtrl", function($scope) { 
    $scope.topic = "all"; 
    $scope.sorting = "best"; 
    $scope.articles = get_articles_for_topic(...); 
    $scope.$watch "topic", ... 
    $scope.$watch "sorting", ... 
}); 

模板例如:

<div ng-controller="TopicCtrl"> 
    {{ topic }} - {{ sorting }} 
    <div ng-repeat="article in articles"> 
     ... 
    </div> 
</div> 

總是有一個模板和一個控制器。我想在不重新渲染控制器的情況下使用路由並只更改範圍變量。

我明白,如果對於這個例子,我應該重新呈現模板+控制器作爲默認,但我只想知道我是否可以。


這個問題一個辦法是「我能路由映射到具有訪問$ rootScope功能?」


謝謝:)

+1

目前還不清楚你在問什麼,你可以發佈代碼示例 –

+2

*「我寧願只交換變量。」*什麼變量?你只有一個模板? – dfsq

+1

如果你只有一個頁面,你爲什麼需要路由? – Michelangelo

回答

0

也許你可以使用在路由的參數?

您可以定義路徑爲這樣的事情:

when('/Thread/:topic', { 
     templateUrl: 'templates/thread.html', 
     controller: 'ThreadCtrl' 
}); 

,然後控制器使用該參數的:

app.controller("ThreadCtrl", function($scope) { 
    $scope.topic = $routeParams.topic; 
    $scope.sorting = "best"; 
    $scope.articles = get_articles_for_topic(...); 
    $scope.$watch "topic", ... 
    $scope.$watch "sorting", ... 
}); 

這是最有可能我會怎麼做,但我米也好奇這是否有更好的解決方案。

相關問題