我一直在jquery 1.5中测试新的延迟AJAX函数,并且对它们的简单性和强大功能印象深刻.我有一个更大的问题与排队这些请求的最佳方式有关.
我有两种情况:串行和并行,如果你愿意的话.我想避免同步/异步术语,因为我确实希望所有这些都是异步请求,因此用户可以在等待队列处理时执行其他操作.然后我想在队列完成处理时调用单个函数.
在具有两个请求的"串行模式"中,我希望它们按如下方式处理:
RequestA - > ResponseA - > RequestB - > ResponseB - > EndOfQueue
在具有两个请求的"并行模式"中,我想要这个结果:
RequestA - > RequestB(ResponseA,响应B在准备就绪时处理) - > EndOfQueue
在任何一种情况下,如果任何请求失败,我希望队列停止并将控制传递给失败函数.
我有要求指定动态队列长度所以我不认为我能够将一堆.then()或.when()延迟串起来,因为我不知道它是一百件还是一百件.我正在通过供应商的API在服务器上执行业务逻辑,因此服务器端批处理将很困难,因为我无法控制该代码.
我已经构建了执行"并行"情况的测试用例,并在所有成功完成后调用了when()函数,但这些测试在队列长度上不是动态的,并且不能移植到串行模型.
我可以看到如何创建一个自定义队列对象来处理这个问题,但似乎所有的部分都已经在jquery(?)中为我编写了.我看过了,但还没有找到以这种方式涵盖顺序请求的示例.
有关如何使用jquery队列/延迟功能处理此问题的任何想法?
我有一个AngularJS应用程序,它返回一个json对象列表,我遍历这些对象并将它们放入一个表中.
表格上的每个项目都有一个带有ng-click方法的"删除"按钮:
<td><a ng-click="testButton()" class="btn btn-danger btn-mini">Delete</a></td>
Run Code Online (Sandbox Code Playgroud)
我正在使用ng-resource删除对象 - 这很好.
但是,我希望能够隐藏(或删除)容纳对象的行和删除后的删除按钮 - 最好是使用JQuery.
这是我的破坏方法:
$scope.destroyThing = function() {
$scope.thing= this.thing;
$scope.thing.$destroy();
$(this.thing).closest("tr").hide(); // something like this maybe
}
Run Code Online (Sandbox Code Playgroud)
该方法很好地破坏了对象 - 它只是不删除行...所以我尝试记录单击按钮时返回的对象:
$scope.testButton = function() {
console.log(this);
}
Run Code Online (Sandbox Code Playgroud)
这似乎返回角度Scope对象本身 - 但我找不到一种方法来访问它所涉及的任何DOM元素.
这是一个屏幕截图,显示从testButton函数返回的对象 - 当然,单击按钮会触发该对象:

如何使用JQuery访问与Angular对象相关的DOM元素?
这是完整的表格行:
<tr ng-repeat="franchise in franchises">
<td ng-model="franchiseName">{{franchise.franchise_name}}</td>
<td ng-model="franchiseNumber">{{franchise.franchise_number}}</td>
<td><a class="btn btn-mini">Edit</a></td>
<td><a ng-click="destroyFranchise()" class="btn btn-danger btn-mini">Delete</a></td>
</tr>
Run Code Online (Sandbox Code Playgroud) 我有一个简单的控制器,如:
function MyController($scope, $http) {
...
$http.post(url).success(function(data) {
console.log(data)
});
}
MyController.$inject = ['$scope', '$http'];
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但我有一个问题.出于安全原因,返回的JSON用/***/注释.使用jQuery,我扩展了$ .ajax对象以删除此注释,然后解析结果.我想用AngularJS实现同样的目的,并以某种方式告诉$ http来删除每个响应中的注释.我想为我的整个应用程序执行此操作,并避免键入始终相同.
我有什么想法可以做到这一点?
常规设置
我建立一个小的网站的WebPack和哈巴狗在此基础上真棒样板: https://github.com/alexnoz/webpack-pug-scss-boilerplate.git
该项目已启动并正在运行,我能够正确渲染哈巴狗文件。
需求
现在,在所有webpack编译发生之前,我需要加载一些数据。我想按照此回答的问题将数据传递给pug-html-loader 。
问题/疑问
我的问题是,我必须异步加载该数据。所以我有一个承诺。如何确保在完成webpack编译之前完成了诺言?
这是我目前无法使用的方法
// in webpack.config.js
var myData = []
loadSomeDataAsync().then(loadedData => myData = loadedData)
{
loader: 'pug-html-loader',
options: {
data: myData // <====
}
}
Run Code Online (Sandbox Code Playgroud)
pug-html-loader接受options.data如果我把静态数据存在,那么这个数据是可用的哈巴狗模板中。
我知道我的问题似乎是,在Webpack编译发生之前,我的Promise尚未解决。但是如何使Webpack以某种方式“等待” Promise解决呢?
我已经尝试注册webpack事件挂钩。但是没有成功。还有其他建议吗?
使用AngularJS框架,我如何使用" 提交 "按钮更新当前实体以及清除锚ID - 我基本上想要快速添加条目,但它总是将我的添加表单变成编辑表单.
这是我目前的div不工作,就像它忽略了$anchor.task=null...
请注意," 添加新 "按钮工作正常!
<div>
Description: <input name="task.desc" ng-required><br>
<a href="#" ng-action="task.$save(); $anchor.task=null">Save</a>
<input type="button" value="Add New" ng-action="$anchor.task=null">
</div>
Run Code Online (Sandbox Code Playgroud) watch服务是否创建了原始函数的代理?
$scope.$watch('query', doSearch, true);
Run Code Online (Sandbox Code Playgroud)
其中:
doSearch = function(query) {
alert("breakpoint not working");
// stuff
}
Run Code Online (Sandbox Code Playgroud)
显示警报,但如果我使用chrome调试器向代码添加断点,它根本不会中断.而非观看的javascript函数中的其他断点正常工作.
更新: 当我不使用chrome dev工具的工作区功能时,断点工作正常.
仍会触发双击事件的两次单击之间的最大延迟是多少?普通 JavaScript、jquery 和 AngularJS 之间的延迟是否会发生变化?
同样,在jquery中fast和slow关键字分别对应什么时间呢?例如,我可以使用$(this).hide("slow");或$(this).hide("fast");。有没有办法更改快速和慢速的默认值?
我一直在使用Angular,并且一直在尝试寻找一种在整个组件树中使用pub / sub机制的方法。
似乎EventEmitter仅发出可以预订到一个级别的事件,但不能更多。同样,它仅将事件向上发射到树上,而现在向下发射。
相关代码在这里:
class App {
onAncestor($event) {
console.log('in ancestor, decendent clicked',$event);
}
}
...
class Entities {
....
onParent($event) {
console.log('in entities parent, child clicked',$event);
}
onGrandParent($event) {
console.log('in grand parent, grandschild clicked',$event);
}
Run Code Online (Sandbox Code Playgroud)
}
仅调用onParent,而不调用onGrandparent或onAncestor。同样,它也不会向下发布。
我想在 Angular 中将我的应用程序部署到生产服务器,但我遇到了问题。当我只使用角度路由(更改组件,而不是重定向)时,应用程序可以正常工作,但是当我在浏览器中刷新页面时,我得到一个从 IIS 返回的 404 页面(我使用 IIS 作为 Web 服务器)
这是我的角度路由:
const appRoutes: Routes = [
{ path: '', redirectTo: '/home', pathMatch: 'full', canActivate: [AuthGuard] },
{ path: 'home', component: DashboardComponent, canActivate: [AuthGuard] },
{ path: "profile", component: UserProfileComponent, canActivate: [AuthGuard] },
{ path: '400', component: ErrorComponent },
{ path: '401', component: ErrorComponent },
{ path: '403', component: ErrorComponent },
{ path: '404', component: ErrorComponent },
{ path: '500', component: ErrorComponent },
{ path: '503', component: ErrorComponent },
{ …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我尝试从 XIB 文件创建自定义 UIView。我遵循了一些教程并得到了下面的代码来加载
import UIKit
class StorePricing: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
self.setupView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.setupView()
}
private func setupView() {
let view = self.loadViewFromXib()
view.frame = self.bounds
view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
self.addSubview(view)
}
private func loadViewFromXib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
return view
}
}
Run Code Online (Sandbox Code Playgroud)
当我在另一个视图中添加此自定义视图时,我的应用程序崩溃了,我注意到 init …
javascript ×6
angularjs ×5
jquery ×3
angular ×2
ajax ×1
ios ×1
jquery-1.5 ×1
node.js ×1
pug-loader ×1
queue ×1
swift ×1
uiview ×1
webpack ×1
xib ×1