检测我是否已经提醒过一条消息

时间:2014-08-06 15:12:20

标签: javascript knockout.js

我有一个页面将一些数据加载到模型中,并且模型的一个属性具有错误消息。我有一个js文件,检查错误消息是否存在;如果是这样,它会显示一条警告,其中包含如下信息:

function CheckErrMsg(model) { 
    if (model.CallStatusStatus() == -111) {
        alert(model.CallStatusErrorMessage());
    }
}

每当我对已加载的对象做任何事情时,它会自动加载另一个,如果检查出新模型,它将再次显示警告。

我希望仅为加载的第一个模型显示警报,所以我想我需要知道是否有办法检查是否已经显示该警报,如果是,则不再显示它。

2 个答案:

答案 0 :(得分:0)

只需设置一个标志:

messageDisplayed=0;

function CheckErrMsg(model) { 

if (model.CallStatusStatus() == -111 && messageDisplayed==0) {
        alert(model.CallStatusErrorMessage());
messageDisplayed=1;
    }
}

那就行了。

答案 1 :(得分:0)

您可以向模型添加IsAlertShown字段,然后在发出警报之前进行检查:

model.IsAlertShown = ko.observable(false);

if (!model.IsAlertShown() && model.CallStatusStatus() == -111) {
    model.IsAlertShown(true);
    alert(model.CallStatusErrorMessage());
}

然而,我个人不喜欢污染'我的View-Model(通常将被发送回服务器)与纯粹与UI相关的东西。所以我会将标志作为函数本身的一部分公开:

if (!CheckErrMsg.IsAlertShown && model.CallStatusStatus() == -111) {
    CheckErrMsg.IsAlertShown = true;
    alert(model.CallStatusErrorMessage());
}

(因为在JavaScript函数中也是对象,你也可以在函数上设置属性)