AngularJS:在Promise被解析后,为新视图操作DOM
AngularJS: Manipulate DOM for the New View Once Promise Is Resolved
在用户进入我的AngularJS应用的下一页之前,我做了一个自定义调用来检索一些数据。我通过AngularJS promise
成功实现了这一点app.config(['$routeProvider', function ($routeProvider) { $routeProvider
.when("/", {templateUrl: "partials/home.html", controller: "PageCtrl",
resolve: {delay: myFunction} })
…
var myFunction = function($q, $timeout){
var defer = $q.defer();
myCustomAjaxCall({
success: function() {
defer.resolve();
},
error: function() {
defer.reject('Reject error');
}
});
return defer.promise;
};
说明myCustomAjaxCall
函数。我必须按原样使用它。它发出调用并在成功时运行回调。这反过来又打消了我的诺言。
这个myCustomAjaxCall
函数尝试为新视图操作DOM。然而,承诺在呈现新视图之前被解析。它是路由器的 routeChangeSuccess
方法,当视图已经改变,准备DOM操作。但是,对于我来说,为时已晚,因为DOM试图在呈现新视图之前被操纵。
在promise resolve执行期间,您是否建议遵循任何解决方案来操作新视图?
可以延迟执行代码。解决本身。你试过吗?
defer.resolve(function() {
// your code
})
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- 如何在渲染新视图之前关闭所有事件
- Telerik MVC 树视图操作
- 从Backbone中的另一个视图调用新视图
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- 主干新视图反映旧模型数据
- 创建新视图时调用呈现函数
- 离子替换新视图的选项卡和页脚
- 如何禁用火狐“新标签”操作时按 ctrl 并单击带有 javascript 事件的链接
- YII:如何将参数列表从js传递到控制器,并通过传递另一个列表来调用新视图
- AngularJS-关闭tile并从ngRepeat指令AngularJS中的模型加载新视图
- Sencha事件处理和视图操作
- 每次新的点击都有新的操作
- 停止当前操作并继续执行另一个(新)操作
- 美元AngularJs http.post不渲染新视图
- Angular UI Router新视图,相同的URL
- AngularJS:在Promise被解析后,为新视图操作DOM
- 骨干移除和新视图不会重置其属性数组内容
- 尝试将数据加载到新视图中
- og:新用户操作的类型和域限制