Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

GuilhermeAw

Sobrescrição de Valores

Recommended Posts

Olá galera tenho um problema, estou quebrando a cabeça aqui mas não consigo fazer funcionar:

Tenho uma variável global que assume um valor inicial (green), mas como podem ver na primeira linha:

document.addEventListener("deviceready", temaAcesso, false);

Eu chamo a função temaAcesso quando o dispositivo ja estiver carregado, ou seja a troca de valores da variavel global é feita dentro de uma função que é chamada a partir dessa temaAcesso.

 

A troca seria: green (inicial) para red (que esta cadastrado num BD).

 

Mas como o dispositivo está carregado (toda a página ja foi carregada) a troca de valores é feita mas não é mostrada na ultima função:

var COLOUR_KEY = '__BASIC_APP_COLOUR__';
var colourPages = [], colour = localStorage[COLOUR_KEY] || _tema;

function setupPageColour(page) {
    var $topbar = $(page).find('.app-topbar');
    colourPages.push($topbar);
    if (colour) {
        $topbar.addClass(colour);
    }
}

Pois a mesma ja foi executada com o valor green, Minha questão é, existe uma forma de fazer com que o Javascript execute PRIMEIRO a função temaAcesso e somente depois dela ter sido executada completamente executar a função setupPageColour?

 

Caso precisem do código completo:

// Quando o dispositivo carregar chamo a função temaAcesso
document.addEventListener("deviceready", temaAcesso, false);

_tema = 'green';

// Caso a tabela TEMA exista.
function sucessoAcessoTabelaTema(tx, results) {
    var len = results.rows.length;
    for (var i = 0; i < len; i++) {
        _tema = results.rows.item(i).cor;
    }
}

// Caso a tabela TEMA não exista.
function erroAcessoTabelaTema(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS TEMA (id unique, cor)');
    tx.executeSql('INSERT INTO TEMA (id, cor) VALUES (1, "red")');
}

function erroAcessoTabela() {
    //alert('erro');
}

function successoAcessoTema() {
    //alert('sucesso');
}

// Crio a tabela TEMA
function verificaTema(tx) {
    tx.executeSql('SELECT * FROM TEMA', [], sucessoAcessoTabelaTema, erroAcessoTabelaTema);
}

// Abro o DB e chamo a função verificaTema.
function temaAcesso() {
    var db = window.openDatabase("Database", "1.0", "GPainel", 200000);
    db.transaction(verificaTema, erroAcessoTabela, successoAcessoTema);
}

var COLOUR_KEY = '__BASIC_APP_COLOUR__';
var colourPages = [], colour = localStorage[COLOUR_KEY] || _tema;

function setupPageColour(page) {
    var $topbar = $(page).find('.app-topbar');
    colourPages.push($topbar);
    if (colour) {
        $topbar.addClass(colour);
    }
}

Obrigado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa resolvi meu problema:

// Caso a tabela TEMA exista.
function sucessoAcessoTabelaTema(tx, results) {
    var len = results.rows.length;
    
    // Retiro o tema atual
    $('.app-topbar').removeClass(tema);
    $('.app-button').removeClass(tema);
    
    // Procuro por temas salvos no DB
    for (var i = 0; i < len; i++) {
        tema = results.rows.item(i).cor;
    }
    
    // Aplico o novo tema.
    $('.app-topbar').addClass(tema);
    $('.app-button').addClass(tema);
    
    // Guardo essas informações
    colourPages = [], colour = localStorage[COLOUR_KEY] || tema;
}

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.