2016-02-17 31 views
0

我有一個可用於啓動預測請求的簡單表單。我將此創建爲父狀態requests(啓動預測)。使用URL創建非抽象父項

期望的行爲

  1. 當一個請求被提交後,需要立即請求在孩子的狀態(查看狀態)顯示爲最近的請求。這個View Status狀態也會包含所有過去請求的網格,這意味着每次調用這個狀態時我都會用數據刷新網格。
  2. 家長和孩子的狀態都可以從側欄菜單導航。
  3. 因此,如果用戶點擊父母(啓動預測),他應該只能看到提交請求的表單。如果用戶直接點擊'查看狀態'(子),那麼他應該能夠看到請求的格式和網格。

app.js

function statesCallback($stateProvider) { 
    $stateProvider 
    .state('requests', { 
    url: '', 
    views: { 
     'header': { 
     templateUrl: 'initiateforecasting.html', 
     controller: 'requestsInitiateController' 
     }, 
     'content': { 
     template: '<div ui-view></div>' 
     } 
    }, 
    params: { 
     fcId: null, 
     fcIndex: null 
    } 
    }) 
    .state('requests.viewStatus', { 
    url: '/ViewStatus', 
    templateUrl: 'viewstatus.html', 
    controller: 'requestsStatusController' 
    }); 
} 

var requestsApp = angular.module('requestsApp', ['ui.router']); 
requestsApp.config(['$stateProvider', statesCallback]); 
requestsApp.run(['$state', function($state) { 
    $state.go('requests'); 
}]); 

Plunker of my attempts so far

這是所有爲我工作的plunker中所示,但我通過不設置一個URL到父。沒有父母狀態的URL允許我看到兩個狀態。如果我添加一個URL到父狀態,然後點擊查看狀態鏈接不會去任何地方(它保持在初始狀態)。

如何更改此設置,以便我可以擁有父狀態的URL並仍然保留我需要從父狀態和子狀態所需的行爲(如上所述)?

注意:沒有獨立示例代碼中父狀態的URL,但是當我將此塊與後端代碼集成時,父狀態中沒有任何URL片段正在向服務器發出不必要的請求。當我導航到子狀態然後轉到父狀態時,這是可見的。它有效地給我留下了重新加載頁面的印象,我認爲這是不必要的,並且如果可以將URL設置爲父狀態,則可以避免這種情況。

回答

1

使用ui.router時,您不得直接寫網址,嘗試這樣的:

<a ui-sref="requests.viewStatus">View Status</a> 

您在ui-sref指令寫狀態的名字,它會自動解析URL。這非常舒適,因爲您可以隨時更改網址,並且不會中斷導航。

+0

這工作,但也不得不使用'/ requests'作爲父狀態的URL。 – Animesh