0

我正在进行本地化并使用 cookie 来存储语言。我有一个Select

var select = new dijit.form.Select({
    name: "languageSelect",
    onChange: function (value) {
        changeLanguage(value);
    }
}, "languageSelect");

onChange事件中,将调用方法changeLanguage

 var changeLanguage = function (language) {
    $.ajax({
        type: "PUT",
        url: "/api/accounts/changelanguage?language=" + language,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            window.location.reload(false);
        }
    });
};

此方法对服务器进行 ajax 调用,然后重新加载页面。

问题是:在页面加载时,我需要读取language用户之前选择的 cookie 并将其设置为Select

select.set("value", readCookie("language"));

但是,这set会导致事件OnChange触发,然后重新加载我一开始不想要的页面。我尝试使用如下所示的一个标志,但没有成功:

var select = new dijit.form.Select({
    name: "languageSelect",
    style: { width: '200px' },
    onChange: function (value) {
        if (isLoading == false)
            changeLanguage(value);
    }
}, "languageSelect");

var isLoading = true;
select.set("value", readCookie("language"));
isLoading = false;

无论如何要解决它,我正在考虑防止事件OnChange触发set方法,但还没有找到如何去做。

4

1 回答 1

9

尝试添加false,例如:

select.set("value", readCookie("language"));

select.set("value", readCookie("language"), false);

falseset()在将阻止onChange事件的方法末尾标记。

于 2013-02-28T04:51:39.587 回答