我正在运行一个包含 Pusher 的 AngularJS 应用程序,用于实时更新模型。当推送器为工厂定义中的 AngularJS 资源发送更新数据时,我想在范围内触发一个动作。
我有一个资源定义如下:
TS.app.factory "Object", ($resource) ->
Object = $resource("objects/:publicToken", {publicToken: "@public_token"}, {update: {method: "PUT"}})
# Checks for updates to object data via Pusher.
Object::watch = ->
channelName = "private-12345"
# See if we've already subscribed to this channel.
channel = Namespace.pusher.channel(channelName)
# If not, subscribe.
channel ||= Namespace.pusher.subscribe(channelName)
# Update data if we get new info from pusher.
channel.bind "updated info", (data) =>
# THIS GETS RUN WHEN PUSHER SENDS UPDATED DATA.
for key, value of data
this[key] = value
# TRIGGER ACTION HERE
我想在此资源的范围内设置变量。我知道对于像 $get 这样的方法,范围会自动更新,但我不知道在这种情况下如何做到这一点。如何访问此处的范围?
如果有其他更好(或更多 Angular-y)的方法来做到这一点,它们是什么?