我有像
这样的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的新人。我不知道这个逻辑是否正确。
我在第一个控制器中有列表项。当我们点击列表时,它从特定列表中获取数据并传递给另一个设计。该设计有详细的数据。所以第二个控制器显示特定列表的详细部分
答案 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>