¿Cómo agregar todos los valores a observableArray
al mismo tiempo? Agregar valores en bucle funciona muy lento en mi caso. Aquí está el ejemplo jsfiddle. jsfiddleknockout observable rendimiento de Array
Respuesta
Puesto que usted está limpiando toda la matriz observable, una forma que puede lograr esto es:
var viewModel = {
name: "base",
addingValue:new ko.observable(),
someArr: new ko.observableArray(["123","432","sdafasd","xrere"]),
add: function()
{
this.someArr.push(this.addingValue());
},
updateSomeArr:function()
{
var temp = [];
for(var i=0;i<5;i++)
{
temp.push("555565");
}
this.someArr(temp);
}
}
jaja bastante simple. Gracias – Neir0
No hay problema. También hay una manera de "desactivar" el comportamiento de observación, actualizar su modelo y luego volver a encenderlo, pero parece que no puedo encontrar la página para ello. –
usando array_name [array_name.length-1] = item; es más rápido que el método push – Marwan
Ya existe una respuesta seleccionada, pero pensé que la siguiente ayudaría. Se puede desactivar el comportamiento de observación mediante la ejecución de su gama observables para conseguir la aplicación de la matriz subyacente:
var underlyingArray = viewModel.someArr();
continuación, se puede añadir elementos a underlyingArray
sin disparar fuera someArr
eventos. Una vez que haya terminado la adición de elementos, llame a:
viewModel.someArr.valueHasMutated();
Esto hará que el evento al fuego notificar todos los observables depende de viewModel.someArr().
var myArray = ko.observableArray([]);
var valuesToInsert = [1,2,3];
myArray.push.apply(myArray, valuesToInsert);
eso es todo
Me gustaría saber por qué la respuesta fue downvoted. – AGS
Todavía no entiendo por qué la respuesta más elegante y correcta fue downvoted :). Estaría agradecido por una explicación. – AGS
Este es realmente el mejor enfoque para enviar todos los elementos a una matriz a la vez. Aquí hay una publicación sobre su uso http://www.knockmeout.net/2012/04/knockoutjs-performance-gotcha.html –
- 1. Quitar el yo de Observable Array en el knockout JS
- 2. Knockout JS - Cómo enlazar correctamente un array observable
- 3. Knockout: calculado observable frente a la función
- 4. Asignar datos JSON a Knockout observable Array con vista específica tipo de modelo
- 5. ¿Cómo obtener una longitud observable de Array?
- 6. Inicializar Knockout observable de valor de atributo elemento
- 7. Actualizando un array observable no actualiza UI
- 8. Obtener elemento que un observable está vinculado con Knockout?
- 9. Cómo crear una matriz observable calculada en Knockout
- 10. Cambiar el valor observable en el cambio desplegable Knockout Js
- 11. Obteniendo un elemento concreto de un array observable
- 12. Usando ko.utils.arrayForEach para iterar sobre un array observable
- 13. Knockout.js mapeando un JSON en un array observable
- 14. Arreglo de asignación de comportamiento extraño a array observable con ko.mapping.fromJS
- 15. Knockout JS inicializando una matriz observable de datos del servidor usando un tipo de Javascript
- 16. Patrón para modificar el knockout observable en el modelo principal de vista desde el niño
- 17. Knockout JS: comprobando la existencia de un observable en un enlace IF
- 18. KnockoutJS - Matriz observable de objetos observables
- 19. Eliminación observable de la suscripción observable
- 20. Knockout + customBinding no está actualizando
- 21. tamaño de la ventana observable utilizando nocaut
- 22. Solo lectura colección observable
- 23. Crear ko.observableArray del objeto JSON en knockout
- 24. Observable creadoArray está siempre vacío
- 25. C++ Array vs Vector explicación de la prueba de rendimiento
- 26. ¿Cuál es la mejor forma de clonar/copiar un array observable en knockoutJS?
- 27. esperando en un observable
- 28. Knockout - ¿Cancelar un evento de cambio?
- 29. plantilla de knockout vinculante
- 30. ¿Alternativa a Java Bitset con rendimiento tipo array?
tengo una nota sobre los artículos para agregarlos al problema de rendimiento matriz que se debe utilizar array_name [array_name.length-1] = su artículo; esta línea es más rápida que el método de inserción – Marwan
¿La diferencia es realmente grande? – Neir0
creo que sí, vea este artículo http://www.scottlogic.co.uk/2010/10/javascript-array-performance/ y lo siento, he confundido su array_name [array_name.length] = su elemento – Marwan