如何在angularjs中加载文本字段

时间:2016-09-01 14:36:11

标签: angularjs node.js ngroute routeparams

我正在开发一个应用程序,我希望在表单中加载一个文本字段并禁用它进行编辑。我想要回答两件事。实际上我的想法是从url中获取一个mongodb _id并将其传递给我的控制器并从db中获取相应的Email id并在加载表单中填充它,以便用户无法在该字段中编辑它。

问题1:我已经编写了api,用于使用ID获取电子邮件ID,但我不确定如何从我的网址中获取_id

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

任何格式的网址。

我的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>

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

2 个答案:

答案 0 :(得分:1)

您应该使用URL路由来传递角网址中的变量。我相信你想为每个id提供一个独特的网址,对吗?

$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>

答案 1 :(得分:1)

如果您的网址包含?id=57c5dda12e63d15d2e4dea2c等参数,则可以使用$location.search(url)返回{'id':'57c5dda12e63d15d2e4dea2c'}之类的对象,然后将其传递给api以获取邮件。