【问题标题】:AngularJS ng-model for select is not setting the selected="selected" attribute用于选择的 AngularJS ng-model 未设置 selected="selected" 属性
【发布时间】:2014-08-05 21:53:47
【问题描述】:

我有一个用于编辑手术的 AngularJS 页面,但我无法让任何

我用 ngResource 设置了一个工厂,它在我的控制器中。

// Supporting Data
SurgeryData.get({'accessToken':$rootScope.accessToken})
    .$promise.then(function(response){
        $scope.surgeryData = response.surgeryData;
    });

// Surgery Data
SurgeryServices.get({'surgeryId':$stateParams.surgeryId,'accessToken':$rootScope.accessToken})
    .$promise.then(function(response){
        $scope.surgeryDetails = response;

        $scope.formData.surgeryId = $scope.surgeryDetails.surgery.id;
        ...
        $scope.formData.surgeryStatus = $scope.surgeryDetails.surgery_status;
        ...

        $log.log( angular.toJson( $scope.formData.surgeryStatus ) );
        $log.log( angular.toJson( $scope.surgeryData.surgery_status ) );
    });

这是手术状态的 HTML

<select class="form-control" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status"></select>

这就是我从我的 2 个 $logs 在控制台中得到的信息

$scope.formData.surgeryStatus

{"id":16,"name":"Ready For Pick-Up"}

$scope.surgeryData.surgery_status

[{"id":13,"name":"Inventory Not On Site"},{"id":14,"name":"Inventory On Site"},{"id":16,"name":"Ready For Pick-Up"},{"id":15,"name":"Sterilized For Surgery"}]

表单中的

<select class="form-control ng-pristine ng-valid" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status">
    <option value="?"></option>
    <option value="0">Inventory Not On Site</option>
    <option value="1">Inventory On Site</option>
    <option value="2">Ready For Pick-Up</option>
    <option value="3">Sterilized For Surgery</option>
</select>

【问题讨论】:

  • 你真的很亲密。更改为 ng-options="status as status.name for status in Surgery_status"。 “as”将允许您说出存储在 ng-model 中的内容。另一个问题是它必须是相同的对象指针。所以 $scope.formData.surgeryStatus = $scope.surgeryData.surgery_status[2].

标签: angularjs angularjs-ng-model


【解决方案1】:

ng-init 应该是要走的路。

查看:

<select class="form-control ng-pristine ng-valid" ng-init="formData.surgeryStatus = selected" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status track by status.id">
   <option value="?"></option>
   <option value="0">Inventory Not On Site</option>
   <option value="1">Inventory On Site</option>
   <option value="2">Ready For Pick-Up</option>
   <option value="3">Sterilized For Surgery</option>
</select>

视图模型:

$scope.selected = $scope.surgeryDetails.surgery_id;

ng-init 将从您的选项中找到匹配的值并在加载时选择它。确保将您的 ng-model 设置为您想要选择的任何值,在这种情况下看起来像您的 Id?

【讨论】:

  • 我最终可以让它工作的唯一方法是修改您的答案并在 ng-options 末尾添加“track by status.id”。并将 $scope.selected 设置为 $scope.surgeryDetails.surgery_status.id;
  • 没错,您还必须跟踪您重复的项目,很好。很好地让它自己工作。
猜你喜欢
  • 2017-01-31
  • 2015-05-10
  • 2017-04-02
  • 1970-01-01
  • 2021-01-11
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多