我在模态中的模板中有链接.当我单击它们时,当前页面会发生变化,但叠加层和模态会保持不变.我可以添加ng-click="dimiss()"模态中所有模板中的每个链接,但有更好的方法吗?例如,在成功路由更改时自动关闭它,或者ng-click每个模板只添加一个来处理所有链接?
我有以下服务:
angular.module("services")
.factory("whatever", function($window) {
return {
redirect: function() {
$window.location.replace("http://www.whatever.com");
}
};
});
Run Code Online (Sandbox Code Playgroud)
如何$window在单元测试中模拟对象以防止在运行测试时重新加载页面?
我试过用
spyOn($window.location, 'replace').andReturn(true);
,但它没有工作(仍然有"Some of your tests did a full page reload!"错误)和
$provide.value('$window', {location: {replace: jasmine.createSpy()}})
,但我得到一个错误(Error: [ng:areq] Argument 'fn' is not a function, got Object),堆栈跟踪只指向角自己的源,所以它不是很有帮助...
我有一个带注册表格的模态.相同的表单应显示在目标网页的底部而不是模式中.
目前我的处理注册模式的控制器$modalInstance作为其参数之一$scope等.如果我添加ng-controller="SignUpCtrl"到着陆页中的元素,它不起作用,因为控制器不是通过$modal.open方法创建的,所以Angular抱怨Unknown provider: $modalInstanceProvider <- $modalInstance.
我有一个注册用户的服务(authService.signUp(data).then/catch...)但是控制器本身做了一些 - 处理输入,发出事件(例如翻译错误消息),设置cookie等.
在不重复几乎整个控制器代码的情况下处理此类案例的最佳方法是什么?我应该将代码从控制器移动到另一个更高级别的服务吗?
我已经openModal在应用程序路由上定义了操作.我试图在一个组件中调用此操作.
如果我使用语法进行动作冒泡:
{{my-component openModal="openModal"}}
然后一切都按预期工作,我可以使用触发此操作this.sendAction("openModal").
但是,我不确定如何使用新的闭包语法获得相同的结果:
{{my-component openModal=(action "openModal")}}
在这种情况下,Ember抱怨openModal控制器上没有定义任何操作.我是否必须在每个使用的控制器上定义此操作my-component?有没有办法以某种方式使用target选项告诉Ember这个动作是在路线上定义的?可以在单个组件中混合使用冒泡和闭包语法吗?
我正在使用Ember 2.0 beta 1.
module A; def a; end; end
module B; def b; end; end
class C; include A; end
module A; include B; end
class D; include A; end
C.new.b # undefined method error
D.new.b # nil
C.ancestors # [C, A, Object...]
D.ancestors # [D, A, B, Object...]
Run Code Online (Sandbox Code Playgroud)
如何在A中包含模块B,以便已经包含模块A的类也将从模块B获取方法?
我有一个外表(使用postgresql_fdw外部数据包装器),我需要找到最大ID来复制所有记录.当我运行SELECT MAX(id) FROM foreign_table它似乎没有使用索引:
Aggregate (cost=205.06..205.07 rows=1 width=4) (actual time=13999.535..13999.535 rows=1 loops=1)
-> Foreign Scan on foreign_table (cost=100.00..197.75 rows=2925 width=4) (actual time=1.288..13632.768 rows=1849305 loops=1)
Planning time: 0.087 ms
Execution time: 14019.179 ms
Run Code Online (Sandbox Code Playgroud)
当我SELECT MAX(id) FROM table在"真实"表上运行相同的query()时,它使用索引:
Result (cost=0.45..0.46 rows=1 width=0) (actual time=0.164..0.165 rows=1 loops=1)
InitPlan 1 (returns $0)
-> Limit (cost=0.43..0.45 rows=1 width=4) (actual time=0.152..0.153 rows=1 loops=1)
-> Index Only Scan Backward using table_pkey on table (cost=0.43..46102.55 rows=1821907 width=4) (actual time=0.143..0.143 rows=1 loops=1)
Index …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
class A {
constructor(public n: number) {}
defaultFn(a: number): number {
return a + 1;
}
doStuff(callback?): number {
return callback ? callback(this.n) : this.defaultFn(this.n);
}
}
Run Code Online (Sandbox Code Playgroud)
如何告诉TypeScript callback传递给doStuff方法的可选函数应该与方法具有相同的签名defaultFn?
有没有一个由角度生成器生成的AngularJS应用程序的例子,它有$httpBackend来自ngMockE2E模块的e2e测试?优选地,具有用于CI和开发的单个和连续版本.
看起来使用$ httpBackend需要一个创建一个依赖于原始应用程序模块和ngMockE2E模块的新应用程序,并需要新的index.html文件来加载这个新应用程序.
如果测试使用不同的应用程序,是否意味着我应该修改配置以存储为grunt server命令(.tmp)生成的文件以外的其他地方生成的文件,或者这些文件是否完全相同?我希望能够在使用PhantomJS在后台运行e2e测试时运行grunt服务器进行开发.
有没有人创建了一个基于index.html自动生成修改后的index-e2e.html文件的任务?这样它始终是最新的,它也可以与watch一起使用,以便在原始index.html文件更改时自动重新生成它.
我有以下代码:
authService.authenticate()
.then(function (user) {
return Task.all({user: user})
})
.then(function (tasks) {
// How to access user object here?
})
Run Code Online (Sandbox Code Playgroud)
是否有一些内置的方法将user对象传递给第二个then函数而不执行以下操作:
var user2 = null;
authService.authenticate()
.then(function (user) {
user2 = user
return Task.all({user: user})
})
.then(function (tasks) {
// Use user2 here
})
Run Code Online (Sandbox Code Playgroud)
或这个:
authService.authenticate()
.then(function (user) {
var defer = $q.defer()
Task.all({user: user}).then(function (tasks) {
return defer.resolve(user, tasks)
})
return defer.promise
})
.then(function (user, tasks) {
// Use user2 here
})
Run Code Online (Sandbox Code Playgroud)
或通过then直接调用第二个来嵌套它们 …
我有一个集合,其中每个元素都有自己的计数器(数值).Firebase是否可以自动将此数据聚合(减少)为单个值?
我有一个允许在画布上绘图的库。目前,它支持鼠标和触摸事件。我还想添加对指针事件的支持。
我正在处理pointerdown,pointermove和pointerup画布元素上的事件。当我使用鼠标时,我的笔记本电脑上的 Chrome 一切正常。但是,当我在平板电脑上尝试时,我只收到几个pointermove事件(2-5),然后才收到pointercancel事件,然后是pointerout和pointerleave。
我猜浏览器正在触发pointercancel,因为在画布上移动手指也会触发整个页面的滚动。
要在使用触摸事件时禁用滚动,我正在调用event.preventDefault()和touchstart事件的处理touchmove程序,但此解决方案似乎不适用于指针事件。
使用指针事件在画布元素上绘制时如何禁用整个页面的滚动?
rgba(255,0,0,0.5)我正在画布上用半透明颜色(例如 )绘图。当我再次在同一区域上绘制时,透明度值似乎会增加,导致颜色不透明。有没有办法保留源的透明度值(我用来绘制的半透明颜色)?
我有一个表,其中一些记录将特定属性设置为非空值.我想获取这些记录之后的所有记录(按created_at列排序).
这是样本数据:
id | factor | created_at
1 | NULL | 2001-01-01
2 | 1.2 | 2001-01-02
3 | NULL | 2001-01-03
4 | NULL | 2001-01-04
5 | 0.9 | 2001-01-05
6 | NULL | 2001-01-06
7 | 1.1 | 2001-01-07
8 | NULL | 2001-01-08
9 | NULL | 2001-01-09
10 | 1.1 | 2001-01-10
11 | NULL | 2001-01-11
Run Code Online (Sandbox Code Playgroud)
等等.在这种情况下,我想获取ID为3,6,8和11的记录.在PostgreSQL 9.3中它是否可行?在真正的应用程序ids不一定是顺序 - 也有user_id列,我只获取具有相同user_id值的记录.我已经阅读了一些关于LEAD窗口函数的内容,这里可能很有用,但我不确定在这种情况下如何使用它.
angularjs ×5
javascript ×4
angular-ui ×2
postgresql ×2
browser ×1
canvas ×1
database ×1
ember.js ×1
firebase ×1
html ×1
httpbackend ×1
mocking ×1
promise ×1
ruby ×1
scroll ×1
sql ×1
typescript ×1
unit-testing ×1
yeoman ×1