如何在angularjs中加载一个文本域

我正在开发一个应用程序,我想要加载一个文本字段在窗体中被禁用编​​辑。 我想要两件事情得到回答。 其实我的想法是从url中获取一个mongodb _id ,并将其传递给我的控制器,并从数据库获取相应的电子邮件ID,并在加载表单中填写,以便用户不能在该字段中编辑它。

问题1:我已经写了使用ID获取电子邮件ID的API,但我不知道如何从我的url获取_id

www.xyzabc.com/register.html?id:57c5dda12e63d15d2e4dea2c www.xyzabc.com/register.html?57c5dda12e63d15d2e4dea2c

任何格式的url。

我的API是这样的:

 $scope.fetchEmail = function (id) { $scope.id = "57c5dda12e63d15d2e4dea2c"; console.log("logging routeparam"); console.log($scope.id); UserServices.fetchEmail($scope.id, function (email) { console.log("insied fetch fn"); console.log(email); $scope.user.email = email; }); } 

如果ID是硬编码的,上面的代码会做一切完美的事情。 我不知道如何从url获取url参数作为id。

问题2:一旦我在$scope.user.email = email;获得我的id, 它应该被填充在禁止用户编辑的字段中。

我尝试了下面的代码,但它不适合我。

 <input name="email" id="email" class="form-control" placeholder="Email" ng-model={{"user.email"}} disabled="disabled" required> 

任何人都可以帮我解决这个问题。提前感谢。

您应该使用URL路由来传递angular度URL中的variables。 我相信你想为每个ID唯一的url,对不对?

 $stateProvider .state('contacts.detail', { url: "/contacts/:contactId", templateUrl: 'contacts.detail.html', controller: function ($stateParams) { // If we got here from a url of /contacts/42 expect($stateParams).toBe({contactId: "42"}); } }) 

资料来源: https : //github.com/angular-ui/ui-router/wiki/url-routing#url-parameters

一个简单的格式为您的HTML将是以下。

 <input name="email" id="email" class="form-control" placeholder="Email" ng-model="user.email" ng-disabled="true" required> 

如果你的url有类似于?id=57c5dda12e63d15d2e4dea2c参数,那么你可以使用$location.search(url) ,它将返回一个对象,如{'id':'57c5dda12e63d15d2e4dea2c'} ,然后你可以把它传递给api来获取邮件。