Mural.js:3 Uncaught TypeError: Cannot read property 'map' of null at Mural.js:3 at Mural.js:46 novoCartao.js:30 Uncaught ReferenceError: Mural is not defined at novoCartao.js:30
Mural.js:3 Uncaught TypeError: Cannot read property 'map' of null at Mural.js:3 at Mural.js:46 novoCartao.js:30 Uncaught ReferenceError: Mural is not defined at novoCartao.js:30
Oi Flavio, tudo bem? Cola o seu novoCartao.js e o Mural.js aqui pra gente ver o que pode ser?
Boa noite Wanderson, segue abaixo:
novoCartao.js
(function($, Mural, Cartao, Tags, Busca){
"use strict"
$(".novoCartao").submit(function(event){
event.preventDefault()
let $campoConteudo = $(".novoCartao-conteudo")
let conteudo = $campoConteudo.val().trim()
if(conteudo){
let novoCartao = new Cartao(conteudo)
if(Mural.adiciona(novoCartao)){
$campoConteudo.val("")
} else {
alert("Você não está logado")
}
}
})
$(".novoCartao-conteudo").on("focus", function(){
let $campoConteudo = $(this)
let tagsAntigas = Tags.extraiTags($campoConteudo.val())
let tagsToRemoveRegex = $campoConteudo.val().split(/[\s\n]/).filter(function(palavra){
return palavra && tagsAntigas.indexOf(palavra) >= 0
}).join("|")
let txt = $campoConteudo.val().replace(new RegExp(tagsToRemoveRegex,"g"), "").trim()
let tags = Busca.tags.reduce(function(txt,tag){
return txt + "\n" + tag
},"")
$campoConteudo.val(tags && (txt + "\n" + tags))
})
})(jQuery, Mural, Cartao, Tags, Busca)
mural.js
const Mural = (function(_render, Filtro){
"use strict"
let cartoes = JSON.parse(localStorage.getItem("cartoes")).map(cartaoLocal => new Cartao(cartaoLocal.conteudo, cartaoLocal.tipo))
cartoes.forEach(cartao => {
preparaCartao(cartao)
})
const render = () => _render({cartoes: cartoes, filtro: Filtro.tagsETexto});
render()
Filtro.on("filtrado", render)
function preparaCartao(cartao){
cartao.on("mudanca.**", salvaCartoes)
cartao.on("remocao", ()=>{
cartoes = cartoes.slice(0)
cartoes.splice(cartoes.indexOf(cartao),1)
salvaCartoes()
render()
})
}
function salvaCartoes(){
localStorage.setItem("cartoes", JSON.stringify(
cartoes.map(cartao => ({conteudo: cartao.conteudo, tipo: cartao.tipo}))
))
}
function adiciona(cartao){
if(logado){
cartoes.push(cartao)
salvaCartoes()
cartao.on("mudanca.**", render)
preparaCartao(cartao)
render()
return true
} else {
alert("Você não está logado")
}
}
return Object.seal({
adiciona
})
})(Mural_render, Filtro)
Opa Flavio, pelo que entendi, o seu localStorage não está retornando nada, está retornando null, será que você tem dados nele?
É essa parte:
localStorage.getItem("cartoes")
E outra, em novo cartão, o Mural não está sendo passado corretamente, será que você não deixou pra definir o Mural só depois de executar o novo cartão? Pode ser só um problema na ordem dos scripts...