md-select不绑定到ng-model引用的对象

时间:2016-10-29 09:55:49

标签: angularjs angular-material

我有一个带有一些md-select下拉列表的表单,它试图与我的角度控制器中的作用域对象绑定。
html看起来像这样:

            <div id="horizontal_form_category" class="row">
                <div class="col-md-2 col-lg-2" data-ng-repeat="r in categories[general]" dir="rtl">
                    <md-input-container>
                        <label> {{ r.name }} </label>
                        <md-select ng-model="formObject[r.name]" class="md-no-underline">
                            <md-option ng-repeat="option in r.values" ng-value="option "> {{ option }} </md-option>
                        </md-select>
                    </md-input-container>
                </div>
            </div>

控制器有一个对象$scope.formObject = {};的定义(虽然它没有它可以工作)

但是,不幸的是,我的控制器中的$ scope.formObject对象保持为空。 什么可能导致这种奇怪行为的想法?我有一些正常的bootstrap组件,其中ng-model编写相同并且工作得很好。

由于

2 个答案:

答案 0 :(得分:1)

这有什么用? - CodePen

true 作为$ watch的最后一个参数检查对象formObject中的更改。

标记

<div ng-controller="AppCtrl" ng-cloak="" ng-app="MyApp">
  <md-input-container>
    <label> Options </label>
    <md-select ng-model="formObject['Options']" class="md-no-underline">
      <md-option ng-repeat="option in options" ng-value="option "> {{ option }} </md-option>
    </md-select>
  </md-input-container>
</div>

JS

angular.module('MyApp',['ngMaterial'])

.controller('AppCtrl', function($scope) {
  $scope.options = ["Earth", "Saturn", "Jupiter"];

  $scope.$watch("formObject", function () {
    console.log($scope.formObject);
  }, true)
});

答案 1 :(得分:0)

显然没有任何错误。 我的表单的md-select是空的,因此formObject是空的。 我开始放置值的那一刻,formObject被填充,一次一个字段,只包含已设置的字段。 我添加了一个默认值,现在一切都正确显示,只是为了确保这是“错误”。 回想起来,这个bevahiour实际上为我节省了一些代码,所以我采用了它:) 要感谢@camden_kid answer获得$ watch提示,帮助我在几秒钟内弄明白。