如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
How to show template immediately on state enter in ui-router, next when promise is resolved then show data?
如何显示第一个模板,然后如果位置承诺被解析,只需在加载的模板中渲染它?甚至我也想在输入中显示微调器,以通知用户数据正在加载。我想我可以做一个可以直接在landingCtrl中使用的外部服务,但它是否可以通过ui路由器以某种方式完成?
var app = angular
.module('myApp', [
'ngCookies', 'ui.router'
])
app.config(['$stateProvider', '$urlRouterProvider',
function ($stateProvider, $urlRouterProvider) {
.state('landing', {
url: '/landing',
templateUrl: 'landing.html',
controller: 'landingCtrl',
resolve: {
location: [
'$state', '$stateParams', '$q', '$window'
, function ($state, $stateParams, $q, $window) {
var deferred = $q.defer();
$window.navigator.geolocation.getCurrentPosition(
function (position) {
deferred.resolve(position);
});
return deferred.promise;
}]
}
})
}])
app.controller('landingCtrl', ['$scope', 'location', function($scope, location) {
$scope.location = location;
}]);
landing.html
<h1>Show immediately</h1>
<input type="text" ng-model="location" showspinnerwhenloading></input>
Resolved data: {{location}}
这可能不是你想要的答案,但你可以创建一个abstract
状态,在它的resolve
中找出你想要去的地方,或者如果你想在导航到主html
之前向用户显示一些东西,你可以制作一个具体的(而不是abstract
)状态,并在其解析中导航到子状态。这实际上取决于你想对主模板(无论位置如何都要加载的模板)做什么。
实现将是这样的:
--main state (abstract or concrete depending on your needs)
--child states (to which you're going to navigate to, when the parent's resolve promises return)
我希望我能回答你的问题。
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 显示数字,然后每5秒随机更改一次(javascript)
- 如何利用多链接延迟检查并显示ping结果,然后使用JavaScript选择最快的URL
- 如何从单选按钮中获取多个值,然后将它们分配到单个变量中并在页面上显示
- 如何将src的值放在一个输入中,然后在另一个页面上显示它
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 如何在状态输入ui路由器时立即显示模板,然后当承诺被解决时显示数据
- 使用 jQuery 加载 JSON,然后将其显示给查看器
- jQuery淡入淡出/动画不透明度到不同的显示类型,然后阻止
- jQuery移动显示页面5秒钟,然后重定向
- 显示最新评论,然后向上滚动以查看较早的评论
- 在html画布中显示一个图像,然后增大其大小
- 先下载页面,然后显示/动画内容
- jQuery检查URL,然后显示和隐藏元素
- 如何计算一个函数在javascript中运行的次数?然后在页面上显示
- 从select中选择一个选项,然后使用Codeigniter在另一个选择框上显示数据
- angularjs的ng keydown事件,按下哪个键的值,然后显示按下的键的值
- 出现一秒钟然后显示为Javascript的消息
- 在首页动画化一个标志3秒钟,然后显示一个图像滑块
- 如何使用定时事件使用JavaScript显示然后隐藏消息