CoffeeScript for循环不能执行多个操作
CoffeeScript for loops can't take multiple actions?
第一个和第二个有什么不同?第一个按预期工作,但第二个没有做我所期望的。在第一个中,我通过calltopphotos间接地进行调用,但在第二个中,我直接调用getPhotos并传入相册。为什么和如何不同?
$.ajax
method:'get'
url: '/slides/facebook-albums'
success: (albums) ->
renderAlbums(albums)
callToPhotos(albums)
renderAlbums = (albums) ->
for album in albums
$('#facebook .main').append("<div id='#{ album['id'] }' class='album-info'><a class='#{album['id']} fb-album' href='#'>#{album['name']}</a>
<img src=#{album['cover_photo']} width='100' height= '100' class='#{album['id']} fb-album'></div>")
callToPhotos = (albums) ->
for album in albums
getPhotos(album)
getPhotos = (album) ->
$.ajax
method: "get"
url: "/slides/#{album['id']}/photos"
success: (photos) ->
renderPhotos(photos, album['id'])
,
$.ajax
method:'get'
url: '/slides/facebook-albums'
success: (albums) ->
renderAlbums(albums)
# callToPhotos(albums)
getPhotos(albums)
renderAlbums = (albums) ->
for album in albums
$('#facebook .main').append("<div id='#{ album['id'] }' class='album-info'><a class='#{album['id']} fb-album' href='#'>#{album['name']}</a>
<img src=#{album['cover_photo']} width='100' height= '100' class='#{album['id']} fb-album'></div>")
callToPhotos = (albums) ->
for album in albums
getPhotos(album)
getPhotos = (albums) ->
for album in albums
$.ajax
method: "get"
url: "/slides/#{album['id']}/photos"
success: (photos) ->
renderPhotos(photos, album['id'])
这与第二个代码片段循环中的变量作用域有关。您可以引入一个立即调用的函数(IIF)来解决它(请阅读http://coffeescript.org/#loops部分=D底部的do
关键字):
getPhotos = (albums) ->
for album in albums
do (album) ->
$.ajax
method: "get"
url: "/slides/#{album['id']}/photos"
success: (photos) ->
renderPhotos(photos, album['id'])
return
我确实建议你使用你的第一种方法,因为它与IIF相同,但我认为更清楚,因为额外的函数现在有一个描述性的变量名称;可能在getPhotos
函数中声明函数:
getPhotos = (albums) ->
getAlbum = (album) ->
$.ajax
method: "get"
url: "/slides/#{album['id']}/photos"
success: (photos) ->
renderPhotos(photos, album['id'])
getAlbum album for album in albums
return
(注意,在这两种情况下,我都添加了一个空的return
,这样它就不会生成并返回一个数组推导式作为它的最后一个表达式= p)
相关文章:
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 当通过AJAX调用时,控制器操作不会执行
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 点击:更改位置后执行某些操作
- 无法执行文件.退出Acrobat PDF中的操作
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 如何在ListView项模板中获取按钮来执行不同的操作
- 单击元素两次后执行操作
- ReactJS只有在操作完成后才能执行某些操作
- toogleClass函数来切换元素类并在事件期间执行某些操作
- jQuery/Javascript foreach If/Else |如果为空(不执行任何操作)Else(显示forea
- Var工作,但在使用数组执行相同操作时停止
- 如何在mvc3中执行操作而不更改当前页面
- jQuery:$.ajax() 重定向到其 URL 表单操作参数,而不是对表单操作执行 AJAX 请求
- 如何为多个操作执行简单的 jQuery
- Redux 转换到操作执行后
- 反流操作执行后触发通知/回调
- jquery如果按钮点击了执行其他操作执行其他操作
- 在操作执行之前禁用锚链接