Javascript 通过Angularjs解析数据时,如何触发渲染模板
我可以像这样在控制器中调用第一次加载Javascript 通过Angularjs解析数据时,如何触发渲染模板,javascript,angularjs,Javascript,Angularjs,我可以像这样在控制器中调用第一次加载 function RankCtrl($scope, $route, $routeParams, Rank) { $scope.leagues = Rank.query($routeParams) } 当路由更改时,我使用resolve从服务器加载数据。 (更改路由只是对服务器的json请求,所以页面中不会刷新任何内容。) 我可以看到数据是通过chrome开发工具从服务器上正确检索的 但数据去了哪里?我希望将该数据分配给$scope.leagues,并
function RankCtrl($scope, $route, $routeParams, Rank) {
$scope.leagues = Rank.query($routeParams)
}
当路由更改时,我使用resolve从服务器加载数据。
(更改路由只是对服务器的json请求,所以页面中不会刷新任何内容。)
我可以看到数据是通过chrome开发工具从服务器上正确检索的
但数据去了哪里?我希望将该数据分配给$scope.leagues,并希望根据新数据更新视图(模板)
我还尝试在(“$routeChangeSuccess”)上使用$scope.$on
事件,但这会全局触发所有路由更改,不仅限于此控制器
$scope.$on('$routeChangeSuccess', function(next, current) {
$scope.leagues = Rank.query($routeParams);
});
任何帮助都将不胜感激。您需要在
RankCtrl
中插入解析属性(leagues
)的名称
更新:
根据角度版本,您可能需要手动构造和解析promise对象:
/* ... */
resolve: {
leagues: function($route, $q, Rank) {
var deferred = $q.defer();
return Rank.query($route.current.params, function(leagues){
deferred.resolve(leagues);
});
return deferred.promise;
}
}
乍一看,您的
解析
似乎没有返回任何内容。我只是尝试添加返回秩。query(…),仍然相同,@dcodemithis还有其他需要更改的内容吗?我收到错误:[$injector:unpr]未知提供程序:联盟提供程序您是否有可能在视图中的任何位置使用RankCtrl
和ng controller
指令?我有
,需要更改吗?当然。当使用$routeProvider将控制器分配给视图和路由时,您不需要也不能对同一控制器使用ng controller
指令。我使用的是谷歌CDN的1.2.6。我将解析代码更改为您提供的代码。对于
,只需
,我需要更改什么?
function RankCtrl($scope, $route, $routeParams, leagues) {
$scope.leagues = leagues;
}
/* ... */
resolve: {
leagues: function($route, $q, Rank) {
var deferred = $q.defer();
return Rank.query($route.current.params, function(leagues){
deferred.resolve(leagues);
});
return deferred.promise;
}
}