我一直在尝试将用户数据从 rails 控制器获取到 angular 控制器:
在我的application.html.erb
中,我User
这样定义:
angular.element(document).ready(function() {
angular.module('myModule').value('User', <%= @user.to_json.html_safe %>);
});
在我的角度控制器中:
myModule.controller('MyController', ['$scope', 'User', function($scope, User) {
$scope.user = User;
}]);
这样做的问题是它将用户数据暴露给视图。有一个更好的方法吗?
我也尝试过这种方法:
在我的模块中,我创建了一个带有 $resource 对象的工厂:
myModule.factory('User', function($resource) {
return $resource('/users/:action', {},
{
'getUser': { method: 'GET', params: { action: 'fetch_user.json' }, isArray:true }
});
});
在我的控制器中:
myModule.controller('MyController', ['$scope', 'User', function($scope, User) {
$scope.user = User.getUser();
// Also tried the following.
// This will throw undefined errors in places that are trying to access $scope.user
User.getUser({}, function(data) {
$scope.user = data;
});
}]);
但是,这要么不会按时加载用户数据,要么会undefined
在我的整个应用程序中引发错误,要么会将结果的每个字符放入它自己的数组容器中。
理想情况下,该@user
变量作为 json 从服务器返回users_controller.rb
,我想检索它并将其存储在$scope.user
. 这样做的问题是它需要username
作为参数传递以检索正确的用户数据。
如何在$scope.user
不暴露数据的情况下正确、干净地设置?