我可以改进这个AngularJS / AJAX javascript片段
Can I improve this AngularJS / AJAX javascript snippet?
我有以下通用代码。
MyClass.prototype.doSomething = function () {
$.ajax({
url: turl,
dataType: 'jsonp',
success: function (_this) { //closure
return function (data) {
_this._angular_scope.$apply(function () {
_this.property = // extract stuff from 'data'
_this.analyzeContent() // do more stuff with it
})
}
}(this)
})
}
基本上,它只是一个普通的AJAX调用。有一个…(1) "this"的闭包,这样成功函数可以访问我的对象和它的状态
(2)在里面,我返回一个对数据执行某些操作的函数,但是…
(3)我希望AngularJS能够捕捉到成功所做的一切,所以这个解析数据的函数将进一步,将它的动作封装在$apply调用中。
这是有效的,但我忍不住想知道是否有更好的方法来实现这一点。由于嵌套函数的数量,我每次查看它时都必须考虑我在做什么。
这样可以吗,还是有更好的推荐样式?
我假设这个代码块位于angular服务、控制器或指令的内部。如果不是,那么就有一个更广泛的问题。Angularjs自带了一个$http服务,可以用来代替$。ajax。$http提供与$相同的所有功能。Ajax的额外好处是它是可测试的,它集成了angularjs的摘要循环,所以你不需要担心$scope.$apply()之类的东西。我将这样做:
MyClass.prototype.doSomething = function () {
var self = this;
$http.get( turl ).success( function (data) {
self.property = data.stuff;
self.analyzeContent();
} );
}
这里要记住的重要一点是,javascript使用函数作用域,而不是块作用域。只要对象存在于同一个函数中,它就被认为是"在作用域中"。由于this
的值根据上下文而变化,您可以将其粘贴到变量(self)中,并确信该值是您期望的值。
相关文章:
- 如何使用httpwebrequest在c#中获得网页(使用ajax/javascript的php)的最终响应
- ajax javascript 500 error
- 无法使用ajax/javascript将文件上传到perl脚本
- Ajax Javascript Get JSON value
- 使用ajax/javascript调用php函数
- AJAX - Javascript array to php
- 使用ajax/javascript选择项目并将其添加回mysql
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 通知Ajax/Javascript后台PHP已经完成
- AJAX (JavaScript / PHP), FormData not sending
- AJAX/javascript:解析包含数组的JSON
- AJAX/JavaScript搜索性能优于Java/Oracle
- 使用ajax/javascript和setTimeout重新加载页面2次
- JQuery+Ajax:JavaScript运行时错误:需要函数
- Ajax/Javascript用户状态更新
- 在AJAX javascript中从ASHX获取数据
- 使用 json ajax javascript jquery 和 java 的自动完成搜索栏(无 PHP)
- Ajax JavaScript 复选框更改不起作用
- 如何将值从 AJAX Javascript 传递到 PHP 文件
- 使用 AngularJS/AJAX/JavaScript 调用 PHP