【问题标题】:ng-model changes the text in input field to [Object object]ng-model 将输入字段中的文本更改为 [Object object]
【发布时间】:2016-02-12 10:41:46
【问题描述】:

所以我有一个输入字段,它采用从谷歌自动完成 api 中选择的地址。

<div class="form-group" ng-show="editing || creating" has-class="{'has-error': roomForm.address.$invalid && (roomForm.address.$touched || roomForm.$submitted)}">
                <input address-search selected-address="selectedAddress" class="form-control" placeholder="Where is your place located?" name="address" ng-model="room.address" required type="text">
                <div class="alert alert-danger" ng-show="roomForm.address.$error.required && (roomForm.address.$touched || roomForm.$submitted)" role="alert">The room location is required</div>
            </div>

这是将自动完成附加到输入的指令

angular.module('app')
  .directive('addressSearch', function() {
    return {
      scope: {
        addressSearch: '=',
        selectedAddress: '=selectedAddress'
      },
      link: function(scope, element, attrs) {
        var options = {
          types: ['address']
        };

        var autocomplete = new google.maps.places.Autocomplete(element[0], options);

        autocomplete.addListener('place_changed', function() {
          var address = autocomplete.getPlace();
          scope.selectedAddress(address);
        });
      }
    };
  });

问题是当我选择一个地址然后开始输入另一个表单元素时,输入字段中的地址将变为[对象对象],而不是显示我最初选择的地址。我知道它正在显示,因为它试图将 ng-model 显示为字符串,但我该如何阻止它这样做呢?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    selectedAddress 是一个对象。您需要访问该对象的属性以获取您要查找的字符串。

    在其中输入console.log(selectedAddress) 以查看对象的外观,然后找到您需要的属性并在ng-model 上使用它,例如ng-model="room.address.foo.bar"

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      • 2017-09-09
      • 2020-06-21
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多