如何在JavaScript / Ember.js中通过URL观察特定的AJAX调用
How do I observe a specific AJAX call by URL in JavaScript / Ember.js?
我试图在Ember.js应用程序中创建一个加载按钮组件。该按钮应该在检测到创建了特定的XHR时自动禁用,并在完成XHR时重新启用自己。基本上,我希望它跟踪我提交的特定URL并根据它改变状态。下面是我的Handlebars文件当前的样子,包含了这个组件:
{{loading-button trackMethod="POST" trackURL="/addItem" value="Add Item"}}
我尝试在我的Ember应用程序控制器中使用jQuery的.ajaxComplete()
方法来完成此操作,但我无法获得' {{loading-button}}'组件来观察应用程序控制器中的任何属性。
init: function() {
let self = this;
// Observe all XHRs
$(document).ajaxComplete(function(event, xhr, settings) {
self.set('ajaxCompleteUrl', settings.url);
});
}
感谢任何关于我如何做到这一点的建议。谢谢。
Ember组件的理念是DATA DOWN ACTIONS UP
我的情况和你的相似。我创建了一个单独的搜索按钮组件,如果ajax正在调用,那么设置按钮文本是"搜索"并禁用它,当ajax完成设置按钮文本是"搜索"并启用它。search-button.js
import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['col-sm-1', 'pull-right'],
onHit: null,
isSearching: false,
canNotSearch: false,
actions: {
hit() {
this.get('onHit')();
}
}
});
search-button.hbs
<button type="button" class="btn btn-primary" {{action 'hit'}} disabled={{canNotSearch}}>
<span class="glyphicon glyphicon-search"></span>
{{#if isSearching}}
{{t 'label.common.btn.searching'}}
{{else}}
{{t 'label.common.btn.search'}}
{{/if}}
</button>
xxx-controller.js
export default Ember.Controller.extend({
searchObserver: Ember.observer('isSearching', function() {
Ember.run.later( () => {
this.set('canNotSearch', this.get('isSearching'));
}, 100);
}),
actions: {
search() {
this.set('isSearching', true);
Ember.run.later(() => {
// do some ajax call(must return a promise)
this.doSearch().then(() => {
this.set('isSearching', false);
});
}, 200);
}
}
}
所以,你可以在任何模板中使用search-button
组件。
{{button-search canNotSearch=canNotSearch isSearching=isSearching onHit=(action 'search')}}
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- knockoutjs可观察数组
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- Mathias URL shortener
- 如何有效地将游戏数据存储在URL查询字符串中
- 使用带括号的图像URL作为jQuery的背景
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何在JavaScript / Ember.js中通过URL观察特定的AJAX调用