2015-07-21 57 views
0

我有我希望是一個簡單的問題。如何使用Routeprovider切換部分?

比方說,我有一個JSON對象,它是該URL的數據/page-b

{ 
    "name": "Page B", 
    "url": "page-b", 
    "sections": [{ 
     "name": "A", 
     "description": "Foo", 
    }, { 
     "name": "B", 
     "description": "Bar", 
    }, { 
     "name": "C", 
     "description": "Dog" 
    }, { 
     "name": "D", 
     "description": "Cat", 
    }] 
} 

每一頁都有不同的JSON文件,它GOE的和爭奪,但是在這個例子中,我將第B運行

dashboard.controller('siteCtrl', ['$scope', '$http', '$rootScope', '$location', function($scope, $http, $rootScope, $location) { 

    $rootScope.location = $location.path(); 

    var url = ''; 
    switch($rootScope.location) { 
    case '/': 
    case '/page-a': 
     url = '/data/page-a.json'; 
    break; 
    case '/page-b': 
     url = '/data/page-b.json'; 
    break; 
    case '/page-c': 
     url = '/data/page-c.json'; 
    break; 
    } 

    $http.get(url).success(function(data){ 
    $scope.brandData = data; 
    }); 

}]); 

簡單的路由提供程序,它從散列鍵獲取頁面。我有這個簡單的菜單,我根本無法控制html,但是我想切換json對象中的SECTIONS,而不是全部顯示它們,頁面-b根頁面上有一個單擊事件,但是我我不知道如何找出哪個子鏈接被點擊。

<ul> 
    <li><a href="/#/page-b" class="bg-binding">Page B</a> 
     <ul> 
      <li><a href="#" class="bg-binding">A</a></li> 
      <li><a href="#" class="bg-binding">B</a></li> 
      <li><a href="#" class="bg-binding">C</a></li> 
      <li><a href="#" class="bg-binding">D</a></li> 
     </ul> 
    </li> 
</ul> 

我只希望能夠切換子菜單元素上單擊的部分。這可能提供此代碼嗎?

我注意到Angular將$$hashkey推入對象數組中,這可用嗎?

回答

0

如果你有一個像範圍變量:

$scope.activeSection ='A'; 

你可以使用這個值作爲一個過濾器ng-repeat和使用ng-click,使您的菜單中的變化。還可以使用它在ng-class設置活動類菜單

<a ng-click="activeSection='A'" ng-class="{active: activeSection=='A'}">A</a> 

<div ng-repeat="section in data.sections |filter: {'name': activeSection}"> 
    Name:{{section.name}}<br> 
    Description: {{section.description}} 
</div> 

至於角度去HASHKEYS你是最好的關閉只是忽略他們。使用記錄的API代替

+0

對不起,我沒有狀態我無法控制HTML –

+0

呵呵?那是什麼意思?你如何運行? – charlietfl

+0

我只允許編輯javascript,我無法更改在現有菜單或顯示菜單的頁面中提供的HTML。 –