我有一个带UI路由器的Angular应用程序。
我认为我有ui-sref
前往我的路线:
<a ng-href="#" ui-sref="app.myRoute">Next</a>
我将要加载一个控制器,该控制器在加载时执行长任务:
app.controller('MyRouteController', function($scope) {
this.load = function() {
// ... make a long service call
};
this.load();
});
我看到的行为是,在单击ui-sref
链接后,视图在load()
方法执行完毕后才会更改。即使将load()
调用封装在$timeout
。
如何立即更改视图并使load()
调用异步加载视图?
谢谢!
答案 0 :(得分:0)
在同步调用时,它应该等待load
完成。使用$timeout
调用时https://github.com/spring-projects/spring-integration/pull/1568。
var app = angular.module('app', ['ui.router']);
app.config(function ($stateProvider) {
$stateProvider
.state('root', {
url:'/',
template: '<div ng-controller="AppController"></div>',
controller: function ($timeout) {
console.log('route controller')
$timeout(function () {
console.log('route controller timeout')
})
}
})
.state('otherwise', {
url: "*path",
template: '<a ui-sref="root">root</a>'
});
});
app.controller('AppController', function () {
console.log('app controller')
});