使用AngularJS仅用于路由目的
Use AngularJS just for routing purposes
我刚刚被分配了一个完全用jQuery制作的网站。它异步加载几个页面,并希望成为SPA。
现在唯一的问题是,开发人员一般没有考虑URL,人们除了通过www.example.com 之外,其他任何方式都无法访问该网站
我对AngularJS有点了解,我的问题是:-是否值得集成AngularJS来管理路由,这样我就不必通过jQuery检查每一次点击,然后再检查每一个链接?
感谢
当然,您可以使用AngularJs进行路由。
如果angular和jquery停止协同工作,则不能对angular指令中生成的视图使用jquery选择,因为jquery不会选择运行时生成的视图。
要监视angularjs何时完成DOM操作,请在angular的控制器中使用它来调用jqueryStartWork
方法,该方法应启动jquery的工作。
function stuffController($scope) {
$scope.$on('$viewContentLoaded', jqueryStartWork);
}
对于渲染监视器的一些angularjs指令,您可以有一个指令,当angular通过该指令完成dom操作时,该指令将触发事件。例如,为了监控ng重复,为渲染完成添加此指令
var app = angular.module('myapp', [])
.directive('onFinishRender', function ($timeout) {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last === true) {
$timeout(function () {
scope.$emit('ngRepeatFinished');
});
}
}
}
});
然后在控制器中添加一个新函数,该函数将在ng重复完成时调用,如下所示。
$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
//you also get the actual event object
//do stuff, execute functions -- whatever...
alert("ng-repeat finished");
});
但是不要忘记将这个指令添加到你的ng重复标签中,就像这个一样
<tr data-ng-repeat="product in products" on-finish-render>
[EDIT]今天,我一直在尝试在md选项卡的div中运行一个简单的D3svg-append脚本。我遇到了在控制器完成(md选项卡也完成)渲染所有内容后绘制它的问题。我发现,如果您使用$timeout(windows.setTimeout上的包装器),它将向浏览器的事件队列添加一个新事件。它将在当前队列(呈现)之后和您按顺序添加的新超时事件函数之前运行。它也适用于0ms。
$timeout(drawTree, 0); //drawTree is a function to get #tree div in a md-tab and append a D3 svg
- AngularJs 多个布局用于不同的路由
- 我应该在哪里放置用于角度路由的 html 文件
- 如何构造用于骨干路由的动态url
- 使用AngularJS仅用于路由目的
- 如何将angular js路由用于node js应用程序
- AngularJS+jQuery Mobile w/无适配器&禁用路由-仅用于UI样式
- Angular Js 和 gapi 用于路由应用程序
- AngularJS路由不适用于子文件夹
- 模板之间的路由不适用于 Angular UI
- 骨干路由不适用于 Laravel
- 谷歌地图自动完成与建筑物不适用于路由
- 引导轮播不适用于角度 ng 路由
- 检测角度依赖关系 [角度路由、角度资源等] 是否已加载用于 CDN 回退
- Meteor:用于配置特定于用户类型的路由的约定
- Sammyjs路由不适用于Phonegap
- app.get 不适用于基本路由
- 我可以用javascript扩展控制台对象(用于重新路由日志记录)吗
- AJAX路由不适用于我在Laravel中的自定义函数
- JavaScript不适用于使用ng-include路由的元素
- Node.js REST API服务中使用的基于资源的路由模块,或用于此类服务的其他有用模块