2015-07-27 2 views
0

Мой код прост. Мне нужно обновить ng-repeat.AngularJS Обновить ng-repeat в другом контроллере

HTML

<div class="quick-actions" ng-controller="DashboardController"> 
<div class="ui accordion segment"> 
     <div class="ui top attached label active title"> 
      <?php echo __('My Tasks'); ?> 
      <i class="minus icon"></i> 
     </div> 
     <div class="active content"> 
      <div class="ui items" ng-show="myTasks" id="myTasks"> 
       <!-- Creacion de Items de los Taks --> 
       <div class="item" ng-repeat="T in myTasks"> 
        <div class="content"> 
         <a class="header" href="/angular/#/task/{{ T.Task.id }}"> 
          {{ T.Task.name }} 
         </a> 
         <div class="meta"> 
          {{ T.Task.due_date | date : 'dd-MMM-yyyy' }} 
         </div> 
         <div class="extra high-priority" ng-if="T.Task.priority == 50"> 
          <i class="circle icon"></i> 
          <?php echo __('High'); ?> 
         </div> 
         <div class="extra medium-priority" ng-if="T.Task.priority == 25"> 
          <i class="circle icon"></i> 
          <?php echo __('Medium'); ?> 
         </div> 
         <div class="extra low-priority" ng-if="T.Task.priority == 0"> 
          <i class="circle icon"></i> 
          <?php echo __('Low'); ?> 
         </div> 
        </div> 
       </div> 
       <!-- Termina Creacion de los Items --> 
      </div> 
     </div> 
    </div> 
</div> 

Когда доход хорошо DashboardController в angularjs нагрузки нг-повтора. Здесь данные верны.

.controller('DashboardController', function ($scope, $state, $rootScope, $stateParams, $q, $timeout, $http, $sce, $location, Sesion, Dashboard, Fullscreen) { 

    Dashboard.get_all_tasks().then(function (response) { 
     $scope.myTasks = response; 
    }); 

}) 

Что мне нужно, так это то, что когда я нахожусь в другом контроллере, я могу обновить этот ng-repeat. Здесь не работает (данные некорректны).

.controller('NewTaskController', function ($scope, $state, $rootScope, $stateParams, $q, $timeout, $http, $sce, Sesion, Users, Opportunities, Dashboard) { 

Dashboard.get_all_tasks().then(function (response) { 
        $timeout(function() { 
         $scope.$apply(function() { 
          $scope.myTasks = response; 
         }); 
        }); 
       }); 

}) 

Любая идея, что я делаю неправильно?

+0

Есть ли причина, по которой вы не можете обновлять данные из другой функции в одном контроллере? $ scope содержится в контроллере. Чтобы пройти между контроллерами, вам необходимо передать данные на угловую службу и обратно. –

+0

Причина в том, что мне нужно изменить вид –

+0

Мне нужно добавить еще задачи в NewTaskController, но список одинаковый во всех представлениях –

ответ

0

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

var projectModule = angular.module('project',[]); 
projectModule.factory('Service', function() { 
    return { 
     thing : { 
      x : 100 
     } 
    }; 
}); 
function FirstCtrl($scope, Service) { 
    $scope.thing = Service.thing; 
    $scope.name = "First Controller"; 
} 
function SecondCtrl($scope, Service) { 
    $scope.foo = Service.thing; 
    $scope.name = "Second Controller!"; 
} 

Таким образом $scope.thing от первого контроллера связан с scope.foo во втором контроллере через службу с помощью thing Вам нужно будет определить структуру myTasks на службе вы определяете, так что все элементы получают прошло правильно. Попробуйте реализовать это в своем проекте, и если у вас есть конкретный комментарий по отключению связи, и мы поможем, но я не знаю всего вашего кода или структуры myTasks, поэтому я не даю код для копирования/вставки.

+0

Отлично! но мне нужно обновить ng-repeat, пока я нахожусь в NewTaskController :( –

+0

Если вы выполняете две задачи на одной странице, данные будут связаны между собой. Поэтому вы хотите создать «Service.myTasks», а затем связать это в своих контроллерах с '$ scope.myTasks' –

Смежные вопросы