2013-02-22 6 views
0

J'ai une page que je lie un viewmodel à une table HTML dans une boîte de dialogue jQuery UI.Knockout removeAll() non reconnu

Lorsque l'utilisateur ferme la boîte de dialogue, je souhaite supprimer tout l'élément à l'intérieur du modèle de vue observableArray lié au tableau HTML. J'utilise la méthode removeAll(), mais mon firebug m'a dit que ce n'est pas reconnu comme une fonction.

Pouvez-vous m'aider?

Ceci est un scénario simplifié.

HTML

<input type="button" id="open" value="GO!"><br /> 
<div id='hidden'> 
    <table> 
     <tbody data-bind="foreach: i"> 
      <tr> 
       <td><span data-bind="text: code" /></td> 
       <td><span data-bind="text: descr" /></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

JS

$(function() { 

    function vm() { 
     this.items = [ 
      {code: "2011",descr: "descr 2011"}, 
      {code: "2012",descr: "descr 2012"}, 
      {code: "2013",descr: "descr 2013"} 
     ]; 

     this.i = ko.observableArray(this.items); 

     this.clearFoundEvals = function() 
     { 
      this.i.removeAll(); 
     }; 

     return this; 
    } 

    ko.applyBindings(new vm()); 

    $dialog = $('#hidden').dialog({ 
     autoOpen: false, 
     height: 200, 
     width: 300, 
     buttons: { 
      cancel: function() { 
       vm.clearFoundEvals(); 
       $(this).dialog('close'); 
      } 
      } 
     }); 

     $('#open').click(function(){ 
      $dialog.dialog('open'); 
     });  
    });  

Working example

Répondre

2

Vous ne l'avez pas affecté votre modèle de vue à une variable, donc il n'existe pas dans la méthode cancel:

var vm = new vm(); 
ko.applyBindings(vm); 

+0

J'ai fait une erreur dans mon code, mais cela ne fonctionne toujours pas – AngeloBad

+0

Lorsque vous le déboguez, à quoi cela résout-il? Apparaît-il comme un observableArray? En outre, je ne comprends pas parfaitement pourquoi vous voulez appeler removeAll; cela supprimera tous les éléments de l'observableArray, c'est ce que vous voulez vraiment faire? –

+0

Oui, c'est juste ce que je veux faire. RemoveAll l'élément dans observableArray – AngeloBad