AngularJS在其他控制器

时间:2015-07-27 18:39:27

标签: html angularjs angularjs-ng-repeat angular-services

我的代码很简单。我需要刷新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>

当收入很好时,angularjs中的DashboardController加载ng-repeat。数据在这里是正确的。

.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;
                        });
                    });
                });

})

知道我做错了吗?

1 个答案:

答案 0 :(得分:0)

您需要实现一项服务以在控制器之间传递数据。这是一个简化的例子。正是在这个玩家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的所有代码或结构,因此我不提供复制/粘贴代码。