En general, soy un gran admirador de la propiedad afterAdd de la unión de datos de plantilla en KnockoutJS. Sin embargo, me parece que mis devoluciones de llamada afterAdd siempre se golpean 3 veces, y no estoy seguro de por qué. ¿Estoy haciendo algo incorrectamente?KnockoutJS llamando a la función afterAdd en elementos de espacio en blanco
devoluciones de llamada funciona de esta manera:
- llamada 1: textNode
- Llamada 2: Elemento real que me importa
- Llamada 3: textNode
Para hacer frente, todos mis manejadores terminar teniendo un cheque para isElementContentWhitespace como en el siguiente:
HTML
<ul class="t" data-bind="template: {name: 'itemTmplt', foreach: items, afterAdd: function(elem, idx, val) {my.ko.itemAdd(elem, idx, val);} }">
</ul>
<script id="itemTmplt" type="text/html">
<li class="tbl" data-bind="attr: {id: name}">
<h3 data-bind="text: name"></h3>
</li>
</script>
JS
my.ns("mme.ko");
my.ko = (function() {
"use strict";
return {
itemAdd: function (elem, idx, val) {
if (elem.isElementContentWhitespace) { return; }
/*** do stuff here ***/
}
};
}());