venne/nette-ajax

AJAX 通用脚本,支持代码片段、重定向等。

安装数: 1,587

依赖者: 1

推荐者: 0

安全: 0

星标: 0

关注者: 3

分支: 85

语言:JavaScript

dev-master / 2.0.x-dev 2014-09-06 12:54 UTC

This package is auto-updated.

Last update: 2024-08-29 03:29:24 UTC


README

AJAX 通用脚本,支持代码片段、重定向等。

许可协议

MIT

依赖项

jQuery 1.7

安装

  1. 从 Github 获取源代码。
  2. nette.ajax.js 拷贝到您的 JavaScript 文件目录。
  3. 在模板中链接文件(通常在 app/@layout.latte 中,jQuery 之后)。
  4. 放置初始化脚本的位置
$(function () {
	$.nette.init();
});

使用方法

默认情况下,所有带有 CSS 类 ajax 的链接和表单都将立即 AJAX 化。行为可以在 init 扩展的配置中更改。由 var init = $.nette.ext('init'); 调用返回的对象具有以下属性

AJAX 化绑定到 clicksubmit)事件在 nette 命名空间中。可以通过以下代码取消特定链接的 AJAX 化(而其他回调将保持不变)

$('a.no-ajax').off('click.nette');

或者更简单一点

$('a.no-ajax').netteAjaxOff();

扩展

AJAX 化封装标准的 $.ajax() 调用并扩展它,使其具有几个可以通过自定义回调挂钩的事件。一组相关的回调称为 扩展。代码片段处理、通过 Escape... 取消正在运行请求的能力等功能都是通过扩展的形式实现的。扩展的注册方式如下

$.nette.ext('name', {
    event1: function () {
    },
    event2: ...
}, {
    // ... shared context (this) of all callbacks
});

第一个参数是名称。它是可选的。

第二个参数应该是包含回调的哈希,其键与事件的名称相对应。这些事件是可用的

扩展可以禁用

$.nette.ext('name', null);

扩展可以配置。可以通过以下方式获取其上下文

var context = $.nette.ext('name');

默认扩展

有用的技巧

所有这些特殊功能都假定所有默认扩展都已开启。

data-ajax-off

带有自定义数据属性 data-ajax-off 的链接或其他 AJAX 化元素可以关闭特定扩展的 AJAX 请求。

<a n:href="do!" class="ajax" data-ajax-off="snippets">

您也可以在 $.nette.ajax() 中使用它。如下所示

$.nette.ajax({
	url: ...,
	off: ['snippets']
});

data-ajax-pass(在 validation 扩展中)

AJAX 化元素确保调用 e.preventDefault()。如果需要更多回调,则可以使用此属性阻止它。

data-ajax-append(在 snippets 扩展中)

带有此属性的新代码片段内容不会替换旧内容,而是将其附加到它上面。

data-ajax-validate(在 validation 扩展中)

点击链接或提交表单会在各种条件下进行验证。您可以切换其中任何一个

<a n:href="do!" class="ajax" data-ajax-validate='{"keys":false}'>

就像 data-ajax-off 一样,您可以直接将其传递到 $.nette.ajax()

$.nette.ajax({
	url: ...,
	validate: {
		keys: false
	}
});

这意味着使用 Ctrl 点击链接不会打开新标签页,而是将请求 AJAX 化。

依赖其他扩展

在事件回调中,您可以通过调用 this.ext() 获取其他扩展的上下文。如果将 true 作为第二个参数,则脚本将失败,如果该扩展不可用。

$.nette.ext({
	success: function (payload) {
		var snippets = this.ext('snippets', true);
		...
	}
});