2016-03-24 19 views
1

warum alle entfernen und indexOf funktioniert nicht? Sortieren, spleißen, schneiden und umgekehrt funktioniert gut.Knockout.js "removeAll" Funktion funktioniert nicht

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
<script type='text/javascript' src='knockout-3.4.0.js'> </script> 
</head> 
<body> 
    <table height="100" border="1" width="800"> 
    <tr> 
     <td> 
     <span data-bind="text : array1()"></span> 
    </td> 
    </tr> 
</table> 
<div> 
    <table height="100" border="1" width="1000"> 
    <tr> 
     <td><button data-bind="click : sort1" >Sort</button></td> 
     <td><button data-bind="click : shift1" >Shift</button></td> 
     <td><button data-bind="click : reverse1" >Reverse</button></td> 
     <td><button data-bind="click : splice1" >Splice</button></td> 
     <td><button data-bind="click : indexof1" >IndexOf</button></td> 
     <td><button data-bind="click : slice1" >Slice</button><br></td> 
     <td><button data-bind="click : remove1" >remove</button></td> 
    <td><button data-bind="click : removeAll1" >removeAll</button></td> 
    <td><button data-bind="click : removeFunction" >remFunction</button>/td> 
    </tr> 
</table> 
<table height="100" border="1" width="1000"> 
    <tr> 
    <td>Enter Text <input data-bind="value: textval"></td></input> 
    </tr> 
</table> 
</div> 

<span data-bind="text: textval"></span> 
<script type="text/javascript"> 
var myModel={ 
    array1 : ko.observableArray(["animal","boy","cat","dog","elf","fox"]), 
    textval : ko.observable(""), 
    sort1 : function(){ 
     myModel.array1.sort(); 
    }, 

    shift1 : function(){ 
     alert(myModel.val()); 
     myModel.array1.unshift(myModel.textval()); 

    }, 

Verschiebung funktioniert nicht richtig?

 reverse1 : function(){ 
     myModel.array1.reverse(); 
    }, 

    splice1 : function(){ 
     alert(myModel.array1.splice(1,3)); 
    }, 
    indexof1: function(){ 
     alert(myModel.textval()); 
     alert(myModel.array1.indexOf(myModel.textval())); 
    }, 

    slice1 : function(){ 
     alert(myModel.array1.slice(1,4)); 
    }, 

    removeAll1 : function(){ 
     alert("removall"); 
     myModel.array1.removeAll(); 
    } 

removeAll ist auch nicht funktioniert properly.I viele Zeit versucht, aber in jsp ist es gar nicht funktioniert.

} 
    ko.applyBindings(myModel); 
    </script> 
    </body> 
</html> 
+0

Ihre 'shift1' Methode verwendet intern' unshift' ... Aber noch wichtiger: könnten Sie erklären, was Sie mit "nicht richtig" meinen. Alle Fehler in Ihrer Konsole protokolliert? – user3297291

+0

Ich verwende es in Eclipse Indigo, auf einer JSP-Seite. Code fügt einfach leere Werte ein und removeAll macht nichts. Ich habe es mehrere Stunden lang versucht, im Netz gesucht, der Code scheint einfach und gut zu sein, funktioniert aber immer noch nicht. – Shaurya

Antwort

0

Für RemoveAll das Array leer nur

myModel.array1([]); 

Für Schaltung:

// this is falling over -- alert(myModel.val()); <- should be myModel.textval() 
// therefore not getting to this. 
myModel.array1.unshift(myModel.textval()); 

Auch wenn Sie eine JSFiddle dieser erstellen können.

0

Es gibt Probleme in Ihrem Markup und Ihre Ansichtsmodell, öffnen Sie die Browser-Konsole auf dieser Geige und schauen Sie sich die Fehler für die verschiedenen Aktionen:

https://jsfiddle.net/z15d5awa/

 shift1 : function(){ 
     alert(myModel.val()); 
     myModel.array1.unshift(myModel.textval()); 
    }, 

myModel.val() was ist das?

+0

Vielen Dank für den Hinweis, tatsächlich, während ich verschiedene Möglichkeiten versuchte, habe ich vergessen, diesen Abschnitt des Codes zu aktualisieren. Das war ein Fehler !! nach dem Ändern in "alert (myModel.textval());" es funktioniert gut. danke tyler_mitchell, brettkc für Ihre Hilfe. – Shaurya

+0

Was ist mit removeAll, gibt es auch einen Fehler ?? – Shaurya