当前位置: 首页 > 知识库问答 >
问题:

如何在Angular JS中传递routeProvider中的param?

梁建德
2023-03-14

我在Angular JS中使用routeProvider:

.when('/profile/personal', {
       templateUrl: 'personal.html',
       controller: 'EditProfileController'
})

如何将param传递给控制器EditProfileController,并在这里调用返回数据的Ajax方法。此数据必须显示在personal.html的路由模板中。

示例:

    .controller('EditProfileController', ['$scope', '$http', function ($scope, $http) {
         // If was click on `/profile/personal` from route, must get patam `personal` and call method GetAjax(param);
         $scope.GetAjax = function (param){
            //here return data put it in template HTML from route
         }  

    }]);
.controller('EditProfileController', ['$scope', '$http', function ($scope, $http, $routeParams) {
   console.log($routeParams);
}]);

我得到错误:

TypeError: Cannot read property 'idProfile' of undefined

共有1个答案

张鹏云
2023-03-14

首先,在您的url配置中,必须将url的参数

when('/profile/personal/:idProfile', {
       templateUrl: 'personal.html',
       controller: 'EditProfileController'
})

现在,在EditProfileController中,您应该获得参数并调用ajax请求:

注入$routeParams对象并用

$routeParams.idProfile:

.controller('EditProfileController',  
function ($scope, $http, $routeParams) {

   var idProfile = $routeParams.idProfile;

   $http.get("service url").then(setData, setError);

   function setData(data) {
       $scope.data = data;
   }
   function setError() {
       alert("error on get data profile");
   }

}]);
 类似资料:
  • 问题内容: 我想在angularJS中激活html5Mode,但是我不知道为什么它不起作用。我的代码有什么问题吗? 在HTML 问题答案: 我看到的唯一问题是相对链接和模板因此无法正确加载。 来自有关HTML5模式的文档 相对链接 请务必检查所有相对链接,图像,脚本等。您必须在主html文件()的开头指定网址库,或者必须在所有地方都使用绝对网址(以开头),因为相对网址将解析为绝对网址使用文档的初始

  • 问题内容: 假设我有两个输入框,分别具有对应的ng-model作为fname和lname。如果我将http请求称为: 它会调用URL: 我在后端(python)遇到的错误是: 这些参数不以字符串形式发送吗?如果没有,该如何解决? 问题答案: 这是您的操作方式: Angular负责对参数进行编码。 Maxim Shoustin的答案不起作用(这不是有效的JavaScript文字),而JeyTheva

  • 问题内容: 我目前有一个内置路由的AngularJS应用,它与静态属性分配完美配合。但是我真正想做的是为控制器分配不同的路由: 我想做的是在这里对我的财产做同样的事情,例如: 但似乎我得到一个错误,说找不到 所以有什么办法可以在路由配置中动态加载控制器功能名称? 问题答案: 使用angular ui-router可以做到这一点。 ui-router允许您指定“ controllerProvider

  • 问题内容: 我一直试图获得一个快速应用程序,以流形式发送响应。 当我将“ rs.pipe(res)”替换为“ rs.pipe(process.stdout)”时,它会在控制台中打印,但是如何使其在快速应用程序中工作。 问题答案: 您不需要可读的流实例,只需使用: 之所以可行,是因为在Express中,它基于Node自己的,因此它继承了其所有方法(如)。

  • 当我传递strDate时,它会抛出java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'boolean java.lang.String.equals(java.lang.Object)'

  • 问题内容: 我试图弄清楚是否有任何方法可以将索引参数传递给Promise的回调函数。例如。 现在我想将数组索引参数传递为 能做到吗?请告诉我。 这是下面的代码 问题答案: 您可以为此使用闭包。 例如,在您的代码中,使用类似以下内容的代码: