2016-08-28 2 views
0

Ich habe diesen CodeWie erstellt man dynamische Objekte in AngularJS?

<script> 
     var demo =angular.module('ExampleApp', ['ngDraggable']); 
     demo.controller('MainCtrl', function ($scope) { 
      $scope.centerAnchor = true; 
      $scope.toggleCenterAnchor = function() {$scope.centerAnchor = !$scope.centerAnchor} 
      $scope.draggableObjects = [{name:'subject1'}, {name:'subject2'}, {name:'subject3'}]; 
      $scope.droppedObjects1 = []; 
      $scope.droppedObjects2 = []; 
      $scope.onDropComplete1=function(data,evt,i){ 
       console.log(data); 
       var index = $scope["droppedObjects"+i].indexOf(data); 
       if (index == -1) 
        $scope["droppedObjects"+i].push(data); 
      } 
      $scope.onDragSuccess1=function(data,evt,i){ 
       console.log("133","$scope","onDragSuccess1", "", evt); 
       var index = $scope["droppedObjects"+i].indexOf(data); 
       if (index > -1) { 
        $scope["droppedObjects"+i].splice(index, 1); 
       } 
      } 
     var inArray = function(array, obj) { 
      var index = array.indexOf(obj); 
     } 
     }); 
     var x = 1; 
     demo.$inject = ['$scope']; 

     demo.directive("boxCreator", function($compile){ 
      return{ 
       restrict: 'A', 
       link: function(scope , element){ 
        element.bind("click", function(e) { 

         var childNode = $compile('<div ng-drop="true" ng-drop-success="onDropComplete1($data,$event,'+x+')"><span class="title">Drop area #'+x+'</span><div ng-repeat="obj in droppedObjects'+x+'" ng-drag="true" ng-drag-data="obj" ng-drag-success="onDragSuccess1($data,$event,x)" ng-center-anchor="{{centerAnchor}}">{{obj.name}}</div></div>')(scope) 
         element.parent().prepend(childNode); 
         x++; 
//      console.log(angular.element('ng-drop')); 
        }); 
       } 
      } 
     }); 
    </script> 

Was ich versuche dynamisch auf Schaltfläche anklickt Objekte erstellen zu tun ist, statt dieser $scope.droppedObjects1 = []; und $scope.droppedObjects2 = []; Bitte helfen Sie mir mit diesem und was sind die weiteren Änderungen im Code erforderlich. Ich bin neu bei AngularJS.

Antwort

0

Die Lösung ist $ parse var the_string = 'new_scope';

// Holen Sie sich das Modell var model = $ parse (the_string);

// Weist einen Wert zu model.assign ($ scope, 07);

console.log ($ scope.new_scope);

+0

können Sie den Code entsprechend ändern? –

+0

inject parse service in Ihre Anweisung und diesen Code in Klick-Funktion hinzufügen –

Verwandte Themen