从带有ng-init的控制器传递的变量的默认值,在角文本框中未显示

时间:2017-11-22 23:12:14

标签: javascript angularjs ng-init

我想使用ng-init以编辑形式显示输入文本框的默认值,但无论我做什么,我都无法做到。

这是我写的。

在控制器中:

.controller('ProfileCtrl', function ($scope, $http) {
   $http.get('users.php').then(function (result) {  
   $scope.data = result.data;

   $scope.username = $scope.data.username;
   $scope.email = $scope.data.email;
   $scope.phone = $scope.data.phone;
});

在视图中:

   <label class="item item-input item-stacked-label">
       <span class="input-label">Username</span>
       <input type="text" ng-model="formData.username" placeholder="Email" ng-init="formData.email={{username}}">
   </label>
   <label class="item item-input item-stacked-label">
          <span class="input-label">Phone</span>
             <input type="text" ng-model="formData.phone" placeholder="0815********" ng-init="formData.phone='{{phone}}'">
    </label>
    <label class="item item-input item-stacked-label">
          <span class="input-label">Email</span>
          <input type="text" ng-model="formData.email" placeholder="" ng-init="formData.email='{{email}}'">
    </label>

我还尝试撰写ng-init="formData.email={{email}}"ng-init="formData.email=email",但仍无效。

2 个答案:

答案 0 :(得分:1)

所以你的主要问题是设置ng-init,首先如果你想设置它,就像你在ng-init里面时不应该使用{{ scopevar }},而只是scopevar

但即便如此,也没有理由这样做,就像你在尝试一样。 在字段上设置数据模型后,它会在您获取数据时自动更新 - angular会为您完成所有操作,只需按照以下示例进行设置:

.controller('ProfileCtrl', function ($scope, $http) {
   $http.get('users.php').then(function (result) {  
   $scope.formData = result.data;
});
});

从代码中删除ng-inits。

<label class="item item-input item-stacked-label">
       <span class="input-label">Username</span>
       <input type="text" ng-model="formData.username" placeholder="Email" >
   </label>
   <label class="item item-input item-stacked-label">
          <span class="input-label">Phone</span>
             <input type="text" ng-model="formData.phone" placeholder="0815********" >
    </label>
    <label class="item item-input item-stacked-label">
          <span class="input-label">Email</span>
          <input type="text" ng-model="formData.email" placeholder="">
    </label>

另外,我用简化的例子做了一个小提琴。 https://jsfiddle.net/pegla/9mqz8drh/1/

答案 1 :(得分:0)

<label class="item item-input item-stacked-label">
   <span class="input-label">Username</span>
   <input type="text" ng-model="formData.username" placeholder="Email" >

从代码中删除ng-init。像这样保持你的控制器

   .controller('ProfileCtrl', function ($scope, $http) {
   $http.get('users.php').then(function (result) {  
   $scope.formData = result.data;
});
});