我最近在我的rails应用程序中构建了一个通知功能,它来自gorals=>
Here's the tut
这种方法的长短在于创建一个通知模型,该模型记录了参与某个操作的用户之间的关联(即,发布一个帖子将创建一个通知b/t海报和所发布内容的所有者)。
通知还具有一个名为“read”的属性,默认情况下该属性为false。问题从这里开始。当通知保存正确时,只要我以接收通知的用户身份登录,就会向服务器发送post请求,将“read”更改为true。下面是负责发出请求的脚本和视图。
class Notifications
constructor: ->
@notifications = $("[data-behavior='notifications']")
@setup() if @notifications.length > 0
setup: ->
$("[data-behavior='notifications-link']").on "click", @handleClick ->
$.ajax(
url: "/notifications.json"
dataType: "JSON"
method: "GET"
success: @handleSuccess
)
handleClick: (e) =>
$.ajax(
url: "/notifications/mark_as_read"
dataType: "JSON"
method: "POST"
success: ->
$("[data-behavior='unread-count']").text("")
)
handleSuccess: (data) =>
console.log(data)
items = $.map data, (notification) ->
"#{notification.actor} #{notification.action} #{notification.notifiable.type}"
console.log(items)
$("[data-behavior='notification-items']").html(items)
$("[data-behavior='unread-count']").text(items.length)
if items.length is 0
$("[data-behavior='unread-count']").text("")
jQuery ->
new Notifications
以及观点:
从对脚本的修改来看,@handleclick函数似乎是在不发生click事件的情况下自行运行的。