我有一些代码调用这样的函数:
function trackPDFSEClicks(){
ahoy.track("Viewed Job Spec", {title: "Viewed Software Engineer Job Spec"});
window.location.href = "/Software Engineer.pdf";
}
但是因为此跟踪调用是异步的 - 有时它在加载PDF之前无法完成 - 因此不会跟踪事件。
我不一定要在控制器中去处理这个跟踪,因为如果可能的话,使用这个方法对我来说会更简单 - 所以有什么办法可以强迫这个ahoy.track调用运行同步?
答案 0 :(得分:1)
我决定在apneadiving的洞察力只是在我的控制器中为每个可下载的链接创建一个动作 - 并使用了来自ahoy的rails API和rails AM.value("DB_URL","https://myfirebase.firebaseio.com/");
AM.factory("DB", ["DB_URL",
function(DB_URL) {
var db = new Firebase(DB_URL);
return db;
}
]);
AM.factory("Orders", ["$firebaseArray", "DB","Auth","$firebaseObject","$log",
function($firebaseArray,DB,Auth,$firebaseObject,$log) {
$log.debug("Fetching Orders");
var authData = Auth.$getAuth();
var ordersRef = DB.child("users/" + authData.uid+"/orders/");
$log.debug("ordersRef = " + ordersRef);
var Orders = $firebaseArray(ordersRef);
return {
getOrders: function() {
return Orders;
},
getOrder: function(orderId) {
$log.debug("Order for id: " + orderId);
var orderRef = ordersRef.child(orderId);
$log.debug("orderRef = " + orderRef);
var Order = $firebaseObject(orderRef);
return Order;
}
};
}
]);
方法 - 这给了我那种我期待的行为。