32
A
回答
19
對於這個問題,你可以創建一個具有子狀態既不templateUrl
也不controller
,並提前states
通常之間:
// UPDATED
$stateProvider
.state('schedules', {
url: "/schedules/:day/:month/:year",
templateUrl: 'schedules.html',
abstract: true, // make this abstract
controller: function($scope, $state, $stateParams) {
$scope.schedDate = moment($stateParams.year + '-' +
$stateParams.month + '-' +
$stateParams.day);
$scope.isEdit = false;
$scope.gotoEdit = function() {
$scope.isEdit = true;
$state.go('schedules.edit');
};
$scope.gotoView = function() {
$scope.isEdit = false;
$state.go('schedules.view');
};
},
resolve: {...}
})
.state('schedules.view', { // added view mode
url: "/view"
})
.state('schedules.edit', { // both children share controller above
url: "/edit"
});
一個重要concept這裏要說的是,在ui-router
,當應用程序在一個特定的狀態 - 當一個國家處於「積極」狀態 - 其祖先國家的所有國家也都隱含地活躍起來。
因此,在這種情況下,
- 當從視圖模式的應用進展到編輯模式,其母公司狀態
schedules
(連同其templateUrl
,controller
甚至resolve
)仍將被保留。 - 由於祖先狀態隱式激活,即使正在刷新子狀態(或從書籤直接加載),頁面仍會正確呈現。
17
REF:https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statetransitiontoto-toparams--options
$state.transitionTo('yourState', params, {notify: false});
+0
它有一個錯誤。 https://github.com/angular-ui/ui-router/issues/2334 – murli2308
相關問題
- 1. 更改HTML頁面的狀態而不刷新?
- 2. UI路由器刷新頁面而不是狀態更改
- 3. 角UIRouter不與孩子狀態改變
- 4. 重定向到新頁面而不顯示父頁面
- 5. HTML頁面中顯示的狀態更改
- 6. 顯示HTTP狀態200而不是404的404錯誤頁面
- 7. 重定向頁面,而不更改URL
- 8. 更改數據而不刷新頁面
- 9. JavaScript刷新而不是更改頁面
- 10. 基於另一個div的狀態顯示/隱藏div而不刷新頁面
- 11. 如何更新顯示框而不必刷新頁面?
- 12. 更改頁面顯示
- 13. WordPress:不顯示更新頁面的更改
- 14. 使用jQuery更改URL而不重新加載頁面
- 15. 更改變量而不重新加載頁面
- 16. Angularjs in rails:更改頁面而不重新加載?
- 17. 用javascript更改uri,而不是重新加載頁面
- 18. HTML:更改網址而不重新加載頁面?
- 19. 更改頁面狀態的JavaScript
- 20. 在首頁顯示動態塊而不是靜態頁面?
- 21. 顯示php結果而不重新加載頁面
- 22. 更新html表而不更新頁面
- 23. 如何更改頁面而不刷新整個頁面?
- 24. 更改頁面,而不是導航到新的頁面
- 25. 更改頁面網址而不刷新頁面
- 26. MySQL更新記錄,但頁面顯示不顯示新數據
- 27. React組件不會隨狀態更改而更新
- 28. 顯示狀態欄並更改顏色
- 29. Backbone.js使用Symfony重新加載狀態和頁面狀態
- 30. ScriptManager.AddHistoryPoint - 頁面首先顯示原始頁面狀態,然後保存狀態
這會工作,但我已經有一個抽象的狀態'schedule',然後它的兩個孩子:'schedule.view'和'schedule.edit' 。我需要這個層次結構。那麼你的建議就意味着我需要有'schedule','schedule.view'和'schedule.view.edit'這(出於我將需要一段時間的原因),我不能有 – Kousha
@Kousha這幾乎是和上面的代碼一樣:只要將'schedule'改爲'abstract',在那裏保存'controller'(所以它可以在'.view'和'.edit'狀態中使用),添加一個'view'狀態定義類似於'編輯'上面的一個,然後導航到'gotoView()'內的'schedules.view'。什麼可能是一個問題? – b0nyb0y
@ b0nyb0y如果用戶直接瀏覽'/ edit'並將$ scope.isEdit設置爲true,該怎麼辦? – vzhen