angular ui路由器-必须点击两次才能按预期更新视图(带演示)
angular ui router - having to click twice for view to update as expected (with demo)
我是Angular的新手,刚刚掌握AngularUI路由器框架。我有一个html页面,其中包含一个问题列表(每个问题都需要自己的url)和一个结果页面。
我已经创建了一个快速精简的plunker(与所有文件)来演示这个问题:
http://plnkr.co/edit/QErnkddmWB0JgendbOiV?p=preview
SO参考:
app.js
angular.module('foo', ['ui.router'])
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/q1');
$stateProvider
.state('question', {
url: '/:questionID',
templateUrl: 'questions.html',
controller: 'questionsCtrl'
})
.state('results', {
url: '/results',
templateUrl: 'results.html'
})
})
.controller('questionsCtrl', function($scope, $stateParams) {
$scope.questionID = $stateParams.questionID;
$scope.scotches = [
{
name: 'Macallan 12',
price: 50
},
{
name: 'Chivas Regal Royal Salute',
price: 10000
}
];
});
基本上,由于某种未知的原因(对我来说),我必须点击两次"结果"链接,才能在第一次点击时出现在我的眼中。
有人知道为什么会发生这种事吗?
A。
我们应该做的是反转状态定义:
.state('results', {
url: '/results',
templateUrl: 'results.html'
})
.state('question', {
url: '/:questionID',
templateUrl: 'questions.html',
controller: 'questionsCtrl'
})
为什么?
因为问题状态定义也涵盖了
/results
作为参数/:questionID
但总的来说,这仍然令人困惑,所以我会更多地区分url,例如使用/question
关键字
.state('results', {
url: '/results',
})
.state('question', {
url: '/question/:questionID',
...
})
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- ajax.beginform() 不更新部分视图 MVC
- 角度指令没有更新模型视图
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular数组更改时更新HTML视图
- 更新淘汰视图模型属性时激发更改事件
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Knockout.js-更新父视图模型中的数组,在第二个视图模型中使用值
- 比较两个数组,并通过使用 javascript 保留现有对象来更新新值
- 单击按钮时更新角度视图模型
- 当现有 Google 标记移动到另一个位置时,如何更新新的纬度和经度
- 如何在 DIV 中更新新图像
- 使用 AJAX 更新的模型更新 AngularJS 视图
- 主干新视图反映旧模型数据
- 如何在单击按钮时动态更新部分视图
- 更新主干视图
- 挖空 - 添加了可观察的不更新新对象
- 使用 ajax 从 php 文件中获取随机数不会更新新结果
- 创建新视图时调用呈现函数