我创建了一个名为ExtremeNotifications.js
的文件,并添加到_Layout.cshtml
主版面。
ExtremeNotifications.js包含以下JavaScript代码:
var extremeNotifications = extremeNotifications || {};
extremeNotifications = (function () {
var baseURL = document.baseURI;
var url = baseURL + 'api/usernotifications';
var isNotificationServiceStarted = false;
var timer;
function getPendingNotifications() {
$.ajax({ url: url, success: dataRetrieved, type: 'GET', dataType: 'json' });
}
function dataRetrieved(data) {
alert(data);
}
function startNotifications() {
if (!isNotificationServiceStarted) {
timer = setInterval(getPendingNotifications, 3000);
isNotificationServiceStarted = true;
}
}
function stopNotifications() {
clearInterval(timer);
isNotificationServiceStarted = false;
}
return {
start: startNotifications(),
getPendingNotifications: getPendingNotifications(),
isNotificationServiceStarted: isNotificationServiceStarted,
stop: stopNotifications()
}
})();
然后在我的主页Index.cshtml
中,我使用以下代码启动通知,并且仅在User.Identity.IsAuthenticated
时启动:
<script>
extremeNotifications.start();
</script>
所以现在当我的页面启动并且我是经过身份验证的用户时,我第一次收到警报框但是3秒后我再也看不到其他警报。
有任何意见吗?
答案 0 :(得分:2)
您已关闭,但您正在错误地创建返回的对象:
return {
start: startNotifications,
getPendingNotifications: getPendingNotifications,
isNotificationServiceStarted: isNotificationServiceStarted,
stop: stopNotifications
};
通过在函数名后面加()
,你的代码调用函数并返回它们的返回值,而不是返回对函数本身的引用。