【问题标题】:Angular Material md-select not bindingAngular Material md-select 不绑定
【发布时间】:2016-10-21 08:06:46
【问题描述】:

大家好,感谢阅读,我遇到了 Angular Material md-select 的问题

它不与我的模型绑定。我正在用它来制作一个表格来更新这个模型的数据。

<md-input-container class="md-icon md-block" flex ng-controller="ProveedorController" data-ng-init="listaProveedores()">
<label>Proveedor</label>
<md-select ng-model="detalle.proveedor" required name="proveedores">
    <md-option ng-value="proveedor" ng-repeat="proveedor in proveedores">{{proveedor.nombreProveedor}}</md-option>
</md-select>

我尝试使用ng-selected,但它绑定了另一个不适合模型原件的对象。

知道我做错了什么吗?

【问题讨论】:

    标签: javascript html angularjs material-design angular-material


    【解决方案1】:

    给你 - CodePen

    标记

    <div ng-app="MyApp" ng-controller="ProveedorController">
      <md-input-container class="md-icon md-block" flex data-ng-init="listaProveedores()">
        <label>Proveedor</label>
        <md-select ng-model="detalle.proveedor" required name="proveedores">
          <md-option ng-value="proveedor.nombreProveedor" ng-repeat="proveedor in proveedores">
            {{proveedor.nombreProveedor}}
          </md-option>
        </md-select>
      </md-input-container>
      <br>
      Proveedor: {{detalle.proveedor}}
    </div>
    

    JS

    angular.module('MyApp',['ngMaterial', 'ngMessages', 'material.svgAssetsCache'])
    
    .controller('ProveedorController', function($scope) {
      $scope.proveedores = [
        {nombreProveedor: "Daffy"},
        {nombreProveedor: "Mickey"},
        {nombreProveedor: "Goofy"}];
    });
    

    【讨论】:

    • 对不起,但这只是添加了对图标的依赖,仍然没有解决我的绑定问题。我已经可以使用此选择创建对象(这是产品的 CRUD),但是当我需要更新此对象(产品)时它不显示值,出现问题并初始化错误
    【解决方案2】:

    好的,经过良好的睡眠和数小时的搜索,我找到了解决方案。

    为了跟踪我需要在我的 md-select 上添加一个属性的对象

    在这种情况下类似于:ng-model-options="{trackBy: '$value.id'}"

    <md-input-container class="md-icon md-block" flex ng-controller="ProveedorController" data-ng-init="listaProveedores()">
        <label>Proveedor</label>
        <md-select ng-model="detalle.proveedor" required name="proveedores" ng-model-options="{trackBy: '$value.idProveedor'}">
            <md-option ng-value="proveedor" ng-repeat="proveedor in proveedores">{{proveedor.nombreProveedor}}</md-option>
        </md-select>
    </md-input-container>
    

    现在我所有的模型都可以正常显示。感谢您的阅读,如果浪费了您的时间,我们深表歉意。

    【讨论】:

    • 你也可以这样:"ng-repeat="proveedor in proveedores track by proveedor.idProveedor".docs.angularjs.org/api/ng/directive/ngRepeat
    • 如果您没有 id 并且想使用 2 个属性进行跟踪怎么办?这样做的方法是什么。谢谢
    【解决方案3】:

    我亲身体验过,并尝试了不同的解决方案,但均无济于事。最终的解决方法是使用控制器实例变量而不是 $scope 来保存 ng-model 值。

    不要引用$scope.somemodel来检索更新的模型值,而是使用this.somemodel。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      相关资源
      最近更新 更多