2016-03-24 45 views
1

爲什麼要移除所有和indexOf不起作用?排序,拼接,切片和反向工作正常。Knockout.js「removeAll」功能不起作用

<%@ 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()); 

    }, 

換檔不能正常工作?

 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也不能正常工作。我嘗試了很多次,但在jsp中它根本沒有工作。

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

你的'shift1'方法在內部使用'unshift' ...但更重要的是:你能否解釋你的意思是「不能正常工作」。您的控制檯中記錄了任何錯誤? – user3297291

+0

我在eclipse indigo中使用它,在jsp頁面上。代碼只是插入空白值,removeAll什麼也不做。我試了好幾個小時,在網上搜索,代碼似乎很簡單,但仍然不起作用。 – Shaurya

回答

0

對於removeall過剛剛清空陣列

myModel.array1([]); 

用於移動:

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

此外,如果你能創造這個的jsfiddle。

0

。在你標記的問題和你的視圖模型,打開這個小提琴瀏覽器控制檯,並期待在錯誤的不同的操作:

https://jsfiddle.net/z15d5awa/

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

myModel.val()這是什麼?

+0

謝謝你指出,實際上在嘗試不同的方式時,我忘記了更新這段代碼。那是一個錯誤!將其更改爲「alert(myModel.textval());」後它工作正常。謝謝 tyler_mitchell,brettkc的幫助。 – Shaurya

+0

怎麼樣removeAll,是否有任何錯誤? – Shaurya