angular resolve
时间: 2023-06-22 18:20:42 浏览: 19
在 AngularJS 中,resolve 是一个路由的属性,它用于在路由切换之前预先加载数据,并将它们注入到 controller 中。resolve 可以是一个对象或一个函数。
如果是一个对象,那么对象的属性名表示注入到 controller 中的依赖项的名称,属性值是一个返回 promise 的函数。当所有的 promise 都被解决时,它们的结果会被注入到 controller 中,可以在 controller 中使用它们。
如果是一个函数,那么该函数接收 $q 和 $route 服务作为参数,并返回一个对象,该对象的属性名表示注入到 controller 中的依赖项的名称,属性值是一个返回 promise 的函数。
下面是一个使用 resolve 的示例:
```
angular.module('myApp', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/myRoute', {
templateUrl: 'myRoute.html',
controller: 'MyController',
resolve: {
myData: function($http) {
return $http.get('/api/myData');
}
}
});
}])
.controller('MyController', ['$scope', 'myData', function($scope, myData) {
$scope.myData = myData;
}]);
```
在这个示例中,我们定义了一个名为 myData 的 resolve,它使用 $http 服务获取数据。当路由切换到 /myRoute 时,resolve 会先获取数据,然后将数据注入到 MyController 中,并将数据绑定到 $scope.myData 上。
相关推荐













routerLink是Angular中用于导航的指令,它并不是用来调用方法的。如果你想在导航时调用某个方法,可以在路由配置中使用resolve属性来实现。
具体来说,你可以在路由配置中定义一个resolve对象,该对象中包含一个key和一个value,value是一个函数,用于调用你想要执行的方法。然后在路由链接中使用routerLink指令时,将该key作为参数传递给路由链接即可。
举个例子,假设你有一个名为myMethod的方法,你想在导航到某个路由时调用该方法,你可以这样配置路由:
{
path: 'my-route',
component: MyComponent,
resolve: {
myMethodResult: MyService => MyService.myMethod()
}
}
然后在模板中使用routerLink指令时,将myMethodResult作为参数传递给路由链接:
Go to My Route
这样,在导航到/my-route时,myMethod会被调用,并且myMethod的返回值会作为参数传递给/my-route路由组件。



