Jak dodać wszystkie wartości do observableArray
w jednym czasie? Dodawanie wartości w pętli działa bardzo wolno w moim przypadku. Oto przykład jsfiddle. jsfiddlenokaut obserwowalnyArray wydajność
Odpowiedz
Skoro oczyszczaniu całą zaobserwowania tablicę, jeden sposób można to osiągnąć jest:
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);
}
}
Jest już wybrana odpowiedź, ale myślałem, że po pomoże. Można wyłączyć zachowanie obserwacji wykonując swoją zaobserwowania tablicę, aby uzyskać podstawową realizację tablicy:
var underlyingArray = viewModel.someArr();
Można następnie dodać elementy do underlyingArray
bez wystrzelenie someArr
wydarzenia. Po zakończeniu dodawania elementów, zadzwoń:
viewModel.someArr.valueHasMutated();
To spowoduje, że zdarzenie na ogień powiadamiania wszystkie obserwable zależne viewModel.someArr().
var myArray = ko.observableArray([]);
var valuesToInsert = [1,2,3];
myArray.push.apply(myArray, valuesToInsert);
to wszystko
Chcesz wiedzieć, dlaczego odpowiedź została odrzucona. – AGS
Nadal nie rozumiem, dlaczego najbardziej elegancka i poprawna odpowiedź została odrzucona :). Byłbym wdzięczny za wyjaśnienie. – AGS
To jest naprawdę najlepsze podejście, aby przesłać wszystkie elementy do tablicy na raz.Tutaj jest post na jego wykorzystanie http://www.knockmeout.net/2012/04/knockoutjs-performance-gotcha.html –
- 1. nokaut - HTML href
- 2. nokaut i globalizacja
- 3. nokaut viewmodel i requirejs
- 4. nokaut, zagnieżdżonych foreach
- 5. Durandal JS nokaut Odroczone aktualizacje
- 6. Jak zamówić wiązania typu nokaut?
- 7. nokaut - jak wiązać tylko datę
- 8. nokaut obraz src wiązanie problemu
- 9. Zapisz nokaut obserwowalneArray JSON na localStorage
- 10. użyciem zawiera zamiast stringStartsWith nokaut js
- 11. Łączenie tekstu i HTML przez nokaut
- 12. jak wywołać funkcję aktualizacji niestandardowej wiązania nokaut
- 13. nokaut nie analizuje wyrażeń w IE7
- 14. JSON.stringify obiekt o zmiennych nokaut JS
- 15. nokaut JS bind do właściwości obiektu
- 16. Jquery nokaut: Render szablon w pamięci
- 17. kiedy używać nokaut javascript z ASP.NET MVC
- 18. nokaut - wykonanie kodu po wyrenderowaniu ostatniego elementu
- 19. Ręcznie dostać nokaut, aby ponownie ocenić dependantObservable
- 20. nokaut powiązać obiekt wartość klucza do rozwijanej
- 21. nokaut przekazać dodatkowe parametry do funkcji subskrypcji
- 22. Jak rozmiar okna zaobserwować przy użyciu nokaut
- 23. Zrozumienie wydajność Sinon.js w(), wydajność()() i callsArg
- 24. Wydajność przydzielania pamięci Haskell FFI Wydajność
- 25. Wydajność Java
- 26. Wydajność DefaultTraceListener
- 27. Wydajność dowolnej()
- 28. Wydajność Automappera
- 29. Wydajność dynamic_cast?
- 30. JRuby Wydajność
mam jedną notatkę o dodawanie elementów do tablicy problemu z wydajnością, że należy użyć ARRAY_NAME [array_name.length-1] = swój przedmiot; ta linia jest szybsza niż metoda push – Marwan
Czy różnica jest naprawdę duża? – Neir0
Myślę, że tak, zobacz ten artykuł http://www.scottlogic.co.uk/2010/javascript-array-performance/ i przepraszam, pomyliłem jego nazwę array_name [array_name.length] = Twój przedmiot – Marwan