Kendo UI 单页面应用(二) Router 类

Route 类负责跟踪应用的当前状态和支持在应用的不同状态之间切换。Route 通过 Url 的片段功能(#url)和流量器的浏览历史功能融合在一起。从而可以支持把应用的某个状态作为书签添加到浏览器中。Route 也支持通过代码在应用的不同状态之间切换。

Router 根路径回调函数

  1. <script>
  2. var router = new kendo.Router();
  3.  
  4. router.route("/", function() {
  5. console.log("/ url was loaded");
  6. });
  7.  
  8. $(function() {
  9. router.start();
  10. });
  11. </script>

缺省情况下,如果 URL fragment 为空,将使用缺省的“/”的根路径,此时对于的回调函数被调用,不管初始 URL 是什么,这个初始化的回调函数总会调用。如果使用 IE,按 F12 可以打开 Developer Window,选择 Console 可以看到 console.log 的打印信息。

参数

Router 支持 bound parameters, optional segments, 和 route globbing,类似于绑定参数,可选参数,匹配符匹配参数等。例如:绑定参数

  1. <script>
  2. var router = new kendo.Router();
  3.  
  4. router.route("/items/:category/:id", function(category, id) {
  5. console.log(category, "item with", id, " was requested");
  6. });
  7.  
  8. $(function() {
  9. router.start();
  10.  
  11. // ...
  12.  
  13. router.navigate("/items/books/59");
  14. });
  15. </script>

当运行这个页面时,注意地址栏中的地址为:

<http://localhost:53223/Index.html#/items/books/59 –> #/items/books/59>

可选参数

如果 URL 的部分参数为可选的,此时 Route 的规则为使用”()”,将可选参数放在括号内。

  1. <script>
  2. var router = new kendo.Router();
  3.  
  4. router.route("/items(/:category)(/:id)", function(category, id) {
  5. console.log(category, "item with", id, " was requested");
  6. });
  7.  
  8. $(function() {
  9. router.start();
  10.  
  11. // ...
  12. router.navigate("/items/books/59");
  13.  
  14. // ...
  15. router.navigate("/items");
  16.  
  17. // ...
  18. router.navigate("/items/books");
  19. });
  20. </script>

使用×通配符匹配参数

  1. <script>
  2. var router = new kendo.Router();
  3.  
  4. router.route("/items/*suffix", function(suffix) {
  5. console.log(suffix);
  6. });
  7.  
  8. $(function() {
  9. router.start();
  10.  
  11. // ...
  12. router.navigate("/items/books/59");
  13.  
  14. // ...
  15. router.navigate("/items/accessories");
  16.  
  17. // ...
  18. router.navigate("/items/books");
  19. });
  20. </script>

页面切换

navigation 方法可以用来切换应用,对应的路径的回调方法被调用, navigation 方法修改 URL 的 fragment 部分(#后面部分)。比如:

  1. <a href="#/foo">Foo</a>
  2.  
  3. <script>
  4. var router = new kendo.Router();
  5.  
  6. router.route("/foo", function() {
  7. console.log("welcome to foo");
  8. });
  9.  
  10. $(function() {
  11. router.start();
  12. router.navigate("/foo");
  13. });
  14. </script>

这个例子,将在地址栏显示 http://xxx/index.html#/foo。如果对应的路径不存在,Router 类触发 routeMissing 事件,并把 URL 作为参数传入。

  1. <script>
  2. var router = new kendo.Router({ routeMissing: function(e) { console.log(e.url) } });
  3.  
  4. $(function() {
  5. router.start();
  6. router.navigate("/foo");
  7. });
  8. </script>

你可以通过 change 事件来截获这种页面之间的切换,然后调用 preventDefault 阻止页面切换。

  1. <script>
  2. var router = new kendo.Router({
  3. change: function(e) {
  4. console.log(url);
  5. e.preventDefault();
  6. }
  7. });
  8.  
  9. $(function() {
  10. router.start();
  11. router.navigate("/foo");
  12. });
  13. </script>

Kendo UI 单页面应用(二) Router 类的更多相关文章

  1. Kendo UI开发教程(24): 单页面应用(二) Router 类

    Route类负责跟踪应用的当前状态和支持在应用的不同状态之间切换.Route通过Url的片段功能(#url)和流量器的浏览历史功能融合在一起.从而可以支持把应用的某个状态作为书签添加到浏览器中.Rou ...

  2. Kendo UI 单页面应用(四) Layout

    Kendo UI 单页面应用(四) Layout Layout 继承自 View,可以用来包含其它的 View 或是 Layout.下面例子使用 Layout 来显示一个 View <div i ...

  3. Kendo UI 单页面应用(三) View

    Kendo UI 单页面应用(三) View view 为屏幕上某个可视部分,可以处理用户事件. View 可以通过 HTML 创建或是通过 script 元素.缺省情况下 View 将其所包含的内容 ...

  4. Oracle JET 单页面应用程序Router 使用(上)

    单页面应用程序:使用一个进加载一次的网页,如果页面由于用户的交互而改变,则仅绘制更改的页面部分. 要创建单页面应用程序需要使用 oj.Router 的虚拟导航来支持,ojModule 用来响应页面的重 ...

  5. Asp.net mvc Kendo UI Grid的使用(二)

    上一篇文章对Kendo UI做了一些简单的介绍以及基本环境,这篇文章来介绍一下Grid的使用 先上效果图: 要实现这个效果在Controller在要先导入Kendo.Mvc.UI,Kendo.Mvc. ...

  6. [置顶] Kendo UI开发教程: Kendo UI 示例及总结

    前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...

  7. HTML5 UI框架Kendo UI Web自定义组件(一)

    Kendo UI Web包含数百个创建HTML5 web app的必备元素,包括UI组件.数据源.验证.一个MVVM框架.主题.模板等.在Kendo UI Web中如何创建自定义组件呢,在下面的文章中 ...

  8. [转]Upgrading to Async with Entity Framework, MVC, OData AsyncEntitySetController, Kendo UI, Glimpse & Generic Unit of Work Repository Framework v2.0

    本文转自:http://www.tuicool.com/articles/BBVr6z Thanks to everyone for allowing us to give back to the . ...

  9. vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案

    项目背景 vue-cli生成的单页面项目,router使用history模式.产品会在公众号内使用,需要添加微信JSSDK,做分享相关配置. 遇到的问题 相关配置与JS接口安全域名都已经ok,发布后, ...

随机推荐

  1. WPF ValidationRule 触发ErrorTemplate 的注意事项

    ValidationRule 验证时, 当验证失败后,再次验证成功, errorTemplate 还是触发, 不会被清掉. 因此需要主动调用 Validation.ClearInvalid(dtpTe ...

  2. @SpringBootApplication注解分析

    首先我们分析的就是入口类Application的启动注解@SpringBootApplication,进入源码: @Target(ElementType.TYPE) @Retention(Retent ...

  3. 网络编程 recv()函数

    recv()是编程语言函数. 函数原型int recv( _In_ SOCKET s, _Out_ char *buf, _In_ int len, _In_ int flags); 这里只描述同步S ...

  4. Advanced R之词汇表

    转载请注明出处:http://www.cnblogs.com/lizichao/p/4800513.html 词汇表 想要玩得转R,重要的一点是有一个好的工作词汇表.以下是我认为的一个好的词汇表.你不 ...

  5. git repo

  6. Promise API

    Promise API     刚刚接触promise这个东西,网上看了很多博客,大部分是讲怎么用Promise,丝毫没提怎么实现Promise. 我不甘 心,可是真去看JQuery或者Angular ...

  7. POJ-3280

    Cheapest Palindrome Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10301   Accepted: 4 ...

  8. hadoop学习笔记之-hbase完全分布模…

    安装环境: OS: Oracle linux 5.6 JDK: jdk1.6.0_18 Hadoop: hadoop-0.20.2 Hbase: hbase-0.90.5 安装准备: 1. Jdk环境 ...

  9. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  10. phpstrom添加monokai-sublime主题

    phpstrom默认的主题看起来不是特别舒服,sublime的主题却相当养眼,搜索之后,大为惊喜. 下载地址:https://github.com/sumiaowen/jetbrains-monoka ...