html - style - implement amp
Por qué es & convertirse en & amp; después de la carga de la página? (1)
Estoy usando Firefox y trabajando en una página cuando lo veo &
convierto en &
.
Usualmente puedo arreglar esto usando html_entitiy_decode()
- pero en este caso no está funcionando.
Entonces descubrí esto. La alerta se activa una vez que se carga la página.
antes de
Después
Los datos se cargan usando PHP / Yii, no a través de JS / Ajax. Sin embargo, estoy agregando / eliminando marcas usando JS Knockout.
<ul data-bind="template: { name: ''brand-item-template'', data: $root.brands}">
<li>
<span id="<?= $brand->id?>" data-bind="text: brand_name, attr: {''id'': brand_id}"><?= $brand->name; ?></span>
<a href="#" class="remove el-icon-remove-circle" data-bind="click: $parent.removeBrand"></a>
</li>
</ul>
Actualizar
Descubrí que este código JS Knockout
es lo que hace el cambio. Pero este código no debería activarse hasta que agregue una marca. Entonces, ¿por qué esto afecta my &
s?
Es la self.addBrand = function()
que realiza el cambio. Si elimino esta función y dejo el resto tal como está, todo está bien. ¿Puede ser un error Knockout?
$(''#store.manage-special-offers'').exists(function(){
Store.mangeSpecialOffers();
});
function manageBrandListModel() {
var self = this;
var store_id = $(''.data-item-id'').val();
var exiting_list = $(''.brand-list ul'').clone();
// Data
self.brands = ko.observableArray(create_list(exiting_list));
self.brand_name = ko.observable();
self.brand_id = ko.observable();
self.store_id = ko.observable(store_id);
// This is the function that makes the chage
self.addBrand = function() {
if (self.brand_name() != "") {
// Update DB
$(''#store.manage-brands'').exists(function(){
$.ajax({
url: site_url + ''/associatebrand'',
type: "POST",
dataType: ''json'',
data: {
Brand: {
brandId : self.brand_id(),
storeId : self.store_id(),
add : true
}
},
success: function (data) {
// Add brand to GUI list
self.brands.push(new brand(self.brand_id(), self.brand_name()));
self.brand_name("");
}
});
});
}
}.bind(self);
(...)
function create_list(exiting_list){
var arr_list = [];
$(exiting_list).find(''li'').each(function(e,li){
var id = $(li).find(''span'').prop(''id'');
var name = $(li).find(''span'').html(); // <--- This is the problem. Must be .text()
arr_list.push(new brand(id,name));
});
return arr_list;
}
¿Puede alguien explicar por qué ocurre esto?
El mérito debe ir tanto para JeremyCook como para Quentin por apuntarme en la dirección correcta.
$(exiting_list).find(''li'').each(function(e,li){
var id = $(li).find(''span'').prop(''id'');
var name = $(li).find(''span'').html(); // <--- This is the problem. Must be .text()
arr_list.push(new brand(id,name));
});
Lo que hice mal fue que utilicé .html()
y el texto se devolvió en formato HTML. Cambiar esto a .text()
resolvió mi problema.