小编dou*_*oll的帖子

AngularJS:在不完全重新加载控制器的情况下更改哈希和路由

我有一个控制器,有这样的路线:

#/用品/ 1234

我想在不完全重新加载控制器的情况下更改路径,因此我可以保持控制器中其他内容的位置不变(列出滚动)

我可以想到几种方法来做到这一点,但它们都非常难看.做这样的事情有最好的做法吗?我尝试使用reloadOnSearch:false,但它似乎没有改变任何东西.

controller routes reload persist angularjs

35
推荐指数
4
解决办法
4万
查看次数

AngularJS:在$ scope.$ digest之后立即触发一个事件

在我的AngularJS应用程序中,有几点我想等待$ scope处理到DOM中,然后在其上运行一些代码,例如jquery fadeIn.

有没有办法监听某种digestComplete消息?

我当前的方法是,在设置我想要呈现的任何$ scope变量之后立即使用延迟为0 ms的setTimeout,这样它将让范围完成消化,然后运行完美的代码.唯一的问题是,我偶尔会在setTimeout返回之前看到DOM渲染.我想要一种方法,保证在摘要之后和渲染之前触发.有任何想法吗?

events scope complete digest angularjs

15
推荐指数
1
解决办法
2万
查看次数

Angularjs:查找指令的所有实例

我正在尝试创建一个指令,允许用户使用箭头键逐页导航页面.但是我也希望能够将这些部分分散在dom周围,并且在添加和删除内容时不要破坏它们.我可以想到几种方法,但没有一种方法令人满意:

  • 使用控制器创建一个指令,该控制器允许其他指令自行注册(并在$ destroy上取消注册).但如果我稍后在中间添加一些东西,这将会失灵.此外,我尝试过这种方式编写它,似乎代码的方式多于必要的代码.

  • 每当用户点击一个箭头键,创建一个空数组,并广播一个事件,并通过回调指令在该列表上注册自己.然后,一旦该列表已满,则前进或后退.他们(应该?)按照他们在DOM上的顺序回来,但我不确定,因为这种方式似乎疯狂和hackish.

  • 使用css标记"tabbable"的内容,并在jquery中以简单的方式编写这样的内容,例如:在新的click事件中,var all = $('.tabbable')然后用它做明显的事情.但我真的不想那样做,因为它不是'有角度'的方式.不是出于某种纯洁感,而是因为我将它构建为更大的小部件库的一部分,我希望这个功能可以访问它们.

那么,有没有办法让我获得某种类型的所有指令的范围,而不是诉诸于奇怪的黑客,或者将逻辑分散到各处?

angularjs angularjs-directive

15
推荐指数
2
解决办法
3040
查看次数

AngularJS $ scope在更新后不会呈现

我有一个监听$ scope.$ on的控制器,它会在触发时显示一个弹出窗口.它可以100%的时间从其他几个控制器$ rootScope.$ broadcast方法开始工作.但其中一个将无法工作.

控制器获取事件,并设置所需的$ scope变量,但页面不会更新,即使我触发$ scope.$ eval().然后,如果我转到另一条路线,$ scope将最终渲染,并且模式将弹出该路线的顶部.我不知道我是否在angularjs中发现了一个bug,或者我遗漏了一些基本的东西.

对不起,我不能包含代码,这是一个工作项目.

angularjs

11
推荐指数
2
解决办法
2万
查看次数

IOS -webkit-overflow-scrolling在错误的轴上滚动,或根本不滚动

我正在使用html5为IOS构建移动应用程序.我正在使用"-webkit-overflow-scrolling:touch"来获取原生惯性滚动,但它非常多.在滚动停止之前,我已经解决了内容不呈现的问题,但是一个持久性错误是这样的:

当我尝试向上和向下滚动时,没有任何反应,但是当我尝试水平滚动时,内容会垂直滚动(离轴90度).如果我浏览我的应用程序并返回页面,有时会修复它.此外,尽管内容丰富,但有时它根本不会滚动.

从我用Google搜索的内容来看,似乎已经达成共识,即Apple已经意识到了这个错误,并且无意在任何时候修复它.有没有人找到一个解决方案让-webkit-overflow-scrolling正常工作?

scroll webkit direction ios

8
推荐指数
1
解决办法
1797
查看次数

使用angularjs模拟而不实际嘲笑任何东西

我正在为我们的应用程序编写一些测试,并且我已经包含了angularjs-mocks.js,所以我可以使用它附带的漂亮的dsl函数.

但是我不想实际模拟$ http请求,因为我正在将这个应用程序与客户端的后端进行集成,而后端一直在不断变化,我想测试真实的响应.

在这种情况下,使用真正的http后端的最佳(最简单)方法是什么?

编辑:

我找到了一个潜在的解决方案,就是使用它:

$httpBackend.whenPOST(/.*/).passThrough()
Run Code Online (Sandbox Code Playgroud)

但正如我在下面提到的那样,它不起作用,可能会破坏?我收到此错误:

Error: Unexpected request: POST /some/url/here No more request expected
Run Code Online (Sandbox Code Playgroud)

我在这里打开了一个问题:https://github.com/angular/angular.js/issues/1434

testing jasmine angularjs

8
推荐指数
1
解决办法
3617
查看次数

如何在加载时配置AngularJS应用程序?

我想做这样的事情(但显然不是这个,因为这个函数不能这样工作)

angular.bootstrap( $("#myelement"), ['myModule'], {foo: bar} );
Run Code Online (Sandbox Code Playgroud)

我想传递一个配置对象,因为我们可能希望在页面上有不止一个应用程序实例,具有不同的设置等.我能想到的只是丑陋的变通方法.我认为最好的办法是覆盖我自己制作的"选项"服务,但我仍然无法找到正确的方法(简洁地说).

提前致谢!

configuration bootstrapping dry angularjs

6
推荐指数
1
解决办法
6400
查看次数