2015-07-16 7 views
0

Работа над добавлением перетаскивании функциональности углового-деревом управление: https://github.com/wix/angular-tree-controlСпособ привязки данных от родительской области к элементу в узле в управлении угловым деревом?

Я пытаюсь связать данные из родительской области к элементу я сделал в шаблоне для каждого узла. Однако изолированная область узла затрудняет передачу этой информации. Я добавил атрибут через выделенное определение области (scope: {files: "="}) и установил файлы в свой html. Тем не менее, когда я использовал ng-model = "файлы", данные не меняются или изменение не достигает основной области.

Не может быть, что я не могу просмотреть изменения. Предполагается, что триггер часов из другого углового приложения (ng-file-upload) выключается и вызывает функцию загрузки файла, когда я изменяю основные (не изолированные) данные области видимости с клиента, и этого не происходит. Если данные правильно привязаны из родительской области, функция часов должна запускаться, потому что свойство родительской области видимости должно измениться при изменении свойства локальной области. Я могу добавить дополнительные объяснения или разъяснения, если этого недостаточно.

Вот мой HTML код:

<div treecontrol class="tree-classic" 
    tree-model="dataForTheTree" 
    files="files" 
    options="treeOptions" 
    on-selection="showSelected(node)" 
    selected-node="node1"> 
    <span ngf-drop ngf-select ng-model="files" ngf-drag-over-class="dragover" ngf-multiple="true" ngf-allow-dir="true"> 
{{node.ObjectName}} &nbsp;&nbsp; {{node.FileSize}} {{files}} </span> 
</div> 

Вот мой Javascript:

$scope.getserver = function() { 
    // Simple POST request example (passing data) : 
    $http.post('/api/tree/download', { "Url": "" }). 
     success(function (data, status, headers, config) { 
      // this callback will be called asynchronously 
      // when the response is available 
      $scope.dataForTheTree = JSON.parse(JSON.stringify(data)); 
      $scope.log += JSON.stringify(data); 
     }). 
     error(function (data, status, headers, config) { 
      $scope.log += "error getting file structure"; 
      // called asynchronously if an error occurs 
      // or server returns response with an error status. 
     }); 
} 
$scope.$watch('files', function() { 
    $scope.upload($scope.files); 
}); 

$scope.upload = function (files) { 
    // upload code goes here 
} 

Вот мои правки в угловой-древовидных control.js:

scope: { 
       treeModel: "=", 
       selectedNode: "=?", 
       selectedNodes: "=?", 
       expandedNodes: "=?", 
       onSelection: "&", 
       onNodeToggle: "&", 
       options: "=?", 
       orderBy: "@", 
       reverseOrder: "@", 
       filterExpression: "=?", 
       filterComparator: "=?", 
       done: "&", 
       //this is my edit 
       files: "=" 
      } 
+0

'scope. $ Apply (function() {scope.datafile = 'xxx'})'; – user4898717

+0

Благодарим за отзыв. Было бы здорово, если бы вы могли сказать мне, где это вписывается в мой проект, а также почему. Отредактировал мой вопрос. –

ответ

0

I вытащил его с легким трюком. Вам не нужно создавать новый атрибут для передачи данных до директивы. Поэтому файлы не нужны. Просто измените ng-model = "files" в html на ng-model = "$ parent.files". Его проблема с ng-repeat создает изолированную область для каждого узла, а не с angular-tree-control.js (хотя директива, скорее всего, использует область для каждого узла, а не родительскую).