私はローカライズに取り組んでおり、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
発生し、最初は望ましくないページの再読み込みが発生します。以下のような 1 つのフラグを使用しようとしましたが、うまくいきません。
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
ていましたが、それを行う方法を見つけていません.