Как установить значение свойства на основе переменной в Javascript - PullRequest
1 голос
/ 18 августа 2011

Проблема в том, что у меня есть этот кусок кода (Jquery UI):

    $("#dialog-confirm").dialog({
        resizable: false,
        modal: true,
        buttons: {
            "Remove": function() {
                $(this).dialog("close");
            },
            "Cancel": function() {
                $(this).dialog("close");
            }
        }
    });

и теперь я должен интернационализировать его, дав каждой кнопке перевод слова. У меня есть перевод по переменным STR_REMOVE и STR_CANCEL, но если я сделаю что-то вроде

        buttons: {
            STR_REMOVE: function() {
                $(this).dialog("close");
            },
            STR_CANCEL: function() {
                $(this).dialog("close");
            }
        }

кнопки (свойства) принимают значение "STR_REMOVE" и "STR_CANCEL", а не его содержимое. Итак, вопрос в том, что я могу сделать?

Ответы [ 4 ]

3 голосов
/ 18 августа 2011

Попробуйте.

var STR_REMOVE = "my delete",  STR_CANCEL = "my cancel";

$("#dialog-confirm").dialog({
    resizable: false,
    modal: true,
    buttons: [{
        text: STR_REMOVE,
        click: function () {
            $(this).dialog("close");
        }
    }, 
    {
        text: STR_CANCEL,
        click: function () {
            $(this).dialog("close");
        }
    }]
});

посмотрите на документацию jquery ui: http://jqueryui.com/demos/dialog/#option-buttons

1 голос
/ 18 августа 2011

Вы не можете сделать это встроенным. Сначала вам нужно объявить объект, а затем использовать оператор в квадратных скобках *1002*, чтобы установить свойства:

var buttons = {};
buttons[STR_REMOVE] = function() {
    $(this).dialog("close");
};
buttons[STR_CANCEL] = function() {
    $(this).dialog("close");
};

$("#dialog-confirm").dialog({
    resizable: false,
    modal: true,
    buttons: buttons
});
1 голос
/ 18 августа 2011
var buttons = {};
buttons[STR_REMOVE] = function() {
                $(this).dialog("close");
            };
buttons[STR_CANCEL] = function() {
                $(this).dialog("close");
            };
$("#dialog-confirm").dialog({
     resizable: false,
     modal: true,
     buttons: buttons
});
0 голосов
/ 18 августа 2011

Попробуйте это, не проверено:

$("#dialog-confirm").dialog({
    resizable: false,
    modal: true,
    buttons: {
        "Remove": function() {
            $(this).html(STR_REMOVE);
            $(this).dialog("close");
        },
        "Cancel": function() {
            $(this).html(STR_REMOVE);
            $(this).dialog("close");
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...