2016-05-13 6 views
0

Ich arbeite an einem kleinen Test-Code mit eckigen Dragula und ich habe es geschafft, die Drag-and-Drop-Sache funktioniert, aber es aktualisiert nicht die Quelldaten-Array.Dragula-Modell nicht quellend Array

Ich erkläre einige Variablen in dem Winkelregler:

$scope.todos=['Stuff','Thangs']; 
$scope.plan=new Array(($scope.endTime - $scope.startTime)*(60/$scope.timeBlock)); 

for(var i=0;i<$scope.plan.length;i++){ 
    $scope.plan[i]=["-"]; 
} 

das ist vielleicht nicht die beste Art und Weise hte zu initialisieren, aber ich habe ein Array von Arrays, die jeweils ein „Platzhalter“ Zeichen enthält.

Die HTML dann ziehen diese heraus:

<div ng-app='dayplannerApp' ng-controller="MainCtrl"> 
    <div class='wrapper'> 
    <button ng-click='dump()'>Dump</button> 
    <div class='container' id='source-box' dragula='"first-bag"' dragula-model='todos'> 
    <div id="source" ng-repeat='text in todos' ng-bind='text'></div> 
    </div> 
    <hr> 
    <div class='container'><pre>{{plan[0] | json}}</pre></div> 
    <div class='container'><pre>{{plan[1] | json}}</pre></div> 
    <hr> 
    <table ng-repeat="n in Range()" border='1'> 
    <tr ng-class-odd="'odd'" ng-class-even="'even'" ><td width='20%'>{{n}}</td><td> 
     <div class='container' dragula='"first-bag"' dragula-model='plan[$index]'> 
     <div ng-attr-id="{{ 'block-' + n}}" ng-repeat='text in plan[$index]' ng-bind='text' ng-click='setId($event)'></div> 
     </div></td></tr> 
    </table> 
</div> 
    </div> 

Dies scheint zu stehen, ich ziehe ‚Zeug‘ oder ‚thangs‘ zu dem divs über, der die ng-Repeat enthält und lassen Sie sie fallen kann, die zwei "pre" -Behälter werden aktualisiert, wenn ich die Dinge in den ersten zwei Zeilen ablege.

Aber wenn ich versuche, den zugrunde liegenden „Plan“ Array-Dump mit:

console.log($scope.plan); 

bekomme ich nur das ursprüngliche Array von Array mit nur dem Platzhalter. Mache ich etwas falsch mit der Modellaufgabe? oder die Bindung? Warum wird Plan [1] im div aktualisiert, aber nicht im Javascript?

Antwort

0

Was ich tun verwaltet neu schreiben mit:

for (var hour = $scope.startTime; hour < $scope.endTime; hour++) { 
     for (var mins = 0; mins < 60; mins+=$scope.timeBlock){ 
     var minVal = mins; 
     if (mins===0){ 
      minVal='00'; 
     } 
     result.push(
      { 
      'Time': hour + ':' + minVal, 
      'ToDo': [] 
      }); 
     } 
    } 
    return result; 

Dann habe ich, dass als Quelle:

<table border=1 style="table-layout:fixed;"> 
     <tr><th width='10%'>Time</th><th width='80%'>Activity</th><th width='5%'>Drop here</th></tr> 
     <span> 
     <tr ng-repeat="n in Day" ng-class-odd="'odd'" ng-class-even="'even'" > 
      <td width='20%'>{{n.Time}}</td> 
      <td width='80%'>{{n.ToDo[0]}}</td> 
      <td width='10%' style='background-color:black;overflow:hidden' class='container' dragula='"first-bag"' dragula-model='n.ToDo'> 
       {{n.ToDo}} 
      </td> 
     </tr> 
     </span> 
     </table> 

Nicht wirklich sicher, was das Problem war. Ist es dieser Plan [$ index], da das Modell nicht aktualisiert wird?