我有一個使用AngularJS和bootstrap的應用程序,導致我出現了一些問題。AngularJS函數在路由更改時被錯誤地調用
app.config(function($routeProvider) {
$routeProvider.when("/", {
templateUrl: "index.html",
controller: "controllerIndex"
}).when("/pageone", {
templateUrl: "pageone.html",
controller: "controllerPageOne"
}).when("/pagetwo", {
templateUrl: "pagetwo.html",
controller: "controllerPageTwo"
});
return $routeProvider.otherwise({
templateUrl: "error.html"
});
});
在我pagetwo選項卡,我有兩個標籤:
<tabset>
<tab heading="Metrics" active="tabs[0]" select="changeTab(0)">
<tab heading="Admin LDAP Search" active="tabs[1]" select="changeTab(1)">
</tabset>
正如你可能會說,我一直在使用功能的主導航是通過標籤和路由配置如下完成changeTab和「active」屬性來嘗試使應用程序記住在此頁面上選擇的選項卡,即使路由發生變化。在controllerPageTwo,相關代碼是:
$scope.getCurrentTab = tabTracker.getCurrentTab()
$scope.tabs = tabTracker.getTabs()
$scope.changeTab = (tab) ->
tabTracker.setCurrentTab(tab)
這個想法是,當路線變更/ pagetwo,電流(有源)標籤和標籤的陣列將來自服務,tabTracker被拉動。然後,通過將適當的數組值設置爲true,將另一個設置爲false,將選項卡更改爲該選項卡。這按預期工作,並在按預期更改標籤時調用。
但是,任何時候路由改變FROM/pagetwo,changeTab都會被調用,值爲1.這意味着無論如何,當路由發生變化時,第二個標籤將返回到此頁面上的活動標籤。
爲什麼用這個最大值調用它? (我用三個標籤搞亂了,並且有同樣的問題,但它會用值2來調用它)。我知道有時代碼在控制器中運行了兩次,但除了index.html之外,我沒有任何地方提及ng-controller。
讓我知道如果你需要更多的信息,我試圖包括所有相關的東西,沒有它太長。
這似乎是它!我看到了兩個正在使用的stackoverflow的一些不同的例子,所以我不確定。謝謝! – elykl33t