无法获取angularJs中的数据

时间:2014-11-03 08:50:30

标签: javascript angularjs

我有像

这样的html页面
<div ng-controller="userListControl">
...
</div>
<div ng-controller="userDetailsControl">
....
</div>

我有角度Js代码是

var userDirectory = angular.module('userDirectory',[]);
    userDirectory.controller("userListControl", ['$scope','$http', function($scope, $http)
        {    
            $http.get('data/userData.json').success (function(data){
            $scope.users = data;
            $scope.users.doClick = function(user,event) {
                userInfo(user);
            }
        });
    }]);

    function userInfo(users)
    {
        console.log(user);
        userDirectory.controller("userDetailsControl", function($scope)
        {  
            console.log('well')  
            $scope.user = users;
            console.log($scope.user)

        });
}

这里一切都很好。但是当我们调用click事件时,那个用特定数据调用的userInfo。但是第二个控制器发出错误(角度js错误)。

我是角度jS的新人。我不知道这个逻辑是否正确。

我在第一个控制器中有列表项。当我们点击列表时,它从特定列表中获取数据并传递给另一个设计。该设计有详细的数据。所以第二个控制器显示特定列表的详细部分

1 个答案:

答案 0 :(得分:1)

首先,没有必要在函数内声明你的控制器 - 我不认为你是在尝试延迟加载控制器。在应用启动时将其提供给您的应用。

其次,您需要将数据传递给userDetailsControl控制器。有多种方法可以做到这一点,但在这里你可以使用$rootScope

var userDirectory = angular.module('userDirectory',[]);
userDirectory.controller("userListControl", function($scope, $rootScope, $http)
{
  $scope.selectUser = function(user){
    $rootScope.selectedUser = user;
  }
  $http.get('data/userData.json')
    .success (function(data){
       $scope.users = data;
    });
})

.controller("userDetailsControl", function($scope, $rootScope){
  $rootScope.$watch("selectedUser", function(newVal){
    $scope.user = newVal;
  }
}

并在您的HTML中:

<div ng-controller="userListControl">
  <button ng-repeat="user in users" ng-click="selectUser(user)">{{user.name}}</button>
</div>
<div ng-controller="userDetailsControl">
  <div>{{user.name}}</div>
  <div>{{user.otherDetails}}</div>
</div>