$ scope不反映视图中的数据,而$ rootscope反映了什么?

时间:2016-07-01 09:29:55

标签: angularjs angularjs-scope

我被困在一周左右。我在" TodoDetailController"上解析我的todo_id,然后使用服务获取todo详细信息。但是控制器没有按预期工作。当我在$ scope上写一个简单的数据时,它只是没有反映在我的视图中,但$ rootscope中的数据反映出来,但我不想在任何地方使用$ rootscope。

有人可以解决我的疑问吗?

这是github项目https://github.com/udayghulaxe/ticitic_todo

这是项目结构todo app

这是我到目前为止所做的事情



   

 /************* My states config ************************/
   

 .state('dashboard', {
    			url: '/dashboard',
    			abstract: true,
     			views: {
                '': { templateUrl: './partials/main.html'},
                'header_toolbar@dashboard': { templateUrl: './views/header_toolbar.html' },
                'sidenavleft@dashboard': { templateUrl: './views/sidenav.html' },
                'widgets@dashboard': { templateUrl: './views/widgets.html'},
                'todo_detail@dashboard': { templateUrl: './views/todo_detail.html' }

             	}
    		})

    		.state('dashboard.listdetail', {
    			url: '/lists/:list_id/',
    			templateUrl: './partials/list.detail.html',
    			controller:'ListController',
    			resolve: {
    			            list_id: function($stateParams){
    			                return $stateParams.list_id;
    			            }
    			        },
    			data: {
    				authorizedRoles: [USER_ROLES.user],
    				pageTitle: 'Lists'
    			}
    		})

    		.state('dashboard.tododetail', {
    		url: '/lists/:list_id/:todo_id',
    		templateUrl: './partials/list.detail.html',
    		controller:'TodoDetailController',
    		resolve: {
    		        list_id: function($stateParams){
    		        	//console.log($stateParams);
    		            return $stateParams.list_id;
    		        },
    		        todo_id: function($stateParams){
    		        	//console.log($stateParams);
    		            return $stateParams.todo_id;
    		        }
    		    }
    		})

/**************** My conrtoller *******************/

  

 app.controller("TodoDetailController",['$rootScope','$scope','$state', '$q', 'UserService', '$window','AuthService','DataService','AUTH_EVENTS','list_id','$mdSidenav','todo_id',
  function($rootScope,$scope, $state, $q, UserService, $window, AuthService, DataService,AUTH_EVENTS,list_id,$mdSidenav,todo_id)
{
  /********* This data is not relecting at all **********/
  $scope.list_id = list_id.toString();
  $scope.current_list =  UserService.GetTodoBylistid($rootScope.lists, $scope.list_id);
  $scope.value = 'Not refelcting in view';
  
  /**************** This is updating in view ***************************/
$rootScope.value2 = 'refelcting in view';

    $scope.$watch(todo_id, function() {
        $rootScope.todo_id = todo_id;
    }, true);
      toggleSidenav('right');
  };


}]);




1 个答案:

答案 0 :(得分:0)

在$ scope之后注入$ rootscope

app.controller("TodoDetailController",['$scope','$state','$rootScope', '$q', 'UserService', '$window','AuthService','DataService','AUTH_EVENTS','list_id','$mdSidenav','todo_id',
  function($scope, $state, $rootScope, $q, UserService, $window, AuthService, DataService,AUTH_EVENTS,list_id,$mdSidenav,todo_id)
]);