angularjs的一个问题,ng-repeat中使用ng-click

2013-12-26 22:03:25 +08:00
 ThomasChan
最近在学angular 遇到一个问题
模板是这样
http://gist.github.com/8134116
settings是这样
http://gist.github.com/8134137

结构类似于选项卡

可是我这么写没效果 点ng-click修改不了ng-include

可是在另一个页面里这么写是有效果的
http://gist.github.com/8134192

额搞不懂。。
11238 次点击
所在节点    JavaScript
6 条回复
leofml
2013-12-26 22:31:34 +08:00
teddy1004
2013-12-26 22:52:20 +08:00
ng-click 里面不用加双括号
ThomasChan
2013-12-26 23:13:55 +08:00
@leofml
@teddy1004
不加双引号的话加载出来就还是ng-click=" L = set.link "
加双引号加载出来是ng-click=“ L = '模板路径' ”
所以我就搞不明白是哪儿的问题了
teddy1004
2013-12-27 01:03:09 +08:00
@ThomasChan 1楼给的文档里面的例子很明白了,ng-click 是不用加花括号的
还有就是你的代码的 scope 的问题,因为 ng-repeat 里面输出的元素会有自己新的 scope, L 所在的 scope 是 rootScope,所以就导致变成下面的状况
https://www.dropbox.com/s/0utsjmsiy138hea/Screen%20Shot%202013-12-27%20at%2012.49.18%20AM.png

你每次 ng-click 的时候其实是在新的 scope 里面在创建一个自己的 L 然后赋值的,而 rootScope 的值是一直没变的,比如随便点击了一个就是下面的状况:
https://www.dropbox.com/s/8ub06pycsr10m05/Screen%20Shot%202013-12-27%20at%2012.52.17%20AM.png

解决办法就是,把你代码里面的 L 变成 L.link 或者其他 L.anything
. 起的作用你可以去 egghead.io 里面看看,专门有讲解的,加了之后 scope 层级就变成这样了:
https://www.dropbox.com/s/q0c49x4b1vzr66i/Screen%20Shot%202013-12-27%20at%201.00.54%20AM.png

最后推荐一下我用的这个 chrome 插件,AngularJS Batarang,学 AngularJS 必备~
teddy1004
2013-12-27 01:07:58 +08:00
@ThomasChan 图不小心删了
这是用 L 时候的 scope:
http://d.pr/i/S8k4

加了 . 之后的 scope:
http://d.pr/i/38Rq
ThomasChan
2013-12-27 15:23:15 +08:00
@teddy1004 非常感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/94699

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX