Knockout.js removeAll功能不工作

问题描述 投票:1回答:2

为什么removeAll和indexOf不工作?排序、拼接、分片和反转都能正常工作。

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

     },

shift不能正常工作?

     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中根本就不能用,为什么removeAll和indexOf不能用?

  }
  ko.applyBindings(myModel);
    </script>
  </body>
</html>
javascript knockout.js shift removeall
2个回答
0
投票

你的标记和viewmodel有问题,打开浏览器控制台上的这个fiddle,看看不同动作的错误。

https:/jsfiddle.netz15d5awa。

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

myModel.val() 这是什么?


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的这个。

© www.soinside.com 2019 - 2024. All rights reserved.