[[object Object]] 输入文本 angularjs

[[object Object]] in input text angularjs

<form class="form-horizontal" role="form" name="addCreditoBuscar" id="addCreditoBuscar" ng-controller="AddCreditoAppController">
 <div class="form-group">
  <label class="col-sm-2 col-sm-2 control-label">Buscar</label>
   <div class="col-sm-10">
    <input type="text" class="form-control" name="buscar" ng-model="addCreditoBuscar.buscar" ng-required="true" placeholder="Buscar por cedula, nombre o apellido">
    <span class="help-block" ng-show="addCreditoBuscar.buscar.$error.required">Este campo es requerido es requerido.</span>
   </div>
  </div>
</form>

这是我输入文本的代码,但结果是这个 - http://prntscr.com/73otmc

您的输入元素正在将您提供的值强制转换为字符串。您的值是一个对象,因此它将它强制转换为该对象的字符串值([[object Object]]).

要解决此问题,您需要访问该对象的 属性

ng-model="addCreditoBuscar.buscar" 是一个对象,因此它将显示为 [[object Object]],因为 Object.prototype.toString() 之类的东西正在作用于该对象以将其强制转换为您的字符串值input 元素。

例如:

var obj = {
    someProp: 'someVal'
};

console.log(''+a); // => "[object Object]"

以上演示了来自对象的字符串强制转换。

如果您想显示该对象的 属性,只需使用对象属性访问器(点 .):

addCreditoBuscar.buscar.whateverProperty

因此,每当您的 input 元素将 属性 强制转换为一个值时,如果该值是一个字符串,它将显示为一个字符串(这是您的预期输出):

console.log(''+a.someProp); // => "someVal"

您可以通过在每次更改模型值时显式更改 HTMLElement.value 属性 来擦除显示的值。您可以创建一个指令来处理它。

app.directive('labelField', function () {
    return {
        restrict: 'AE',
        link: function ($scope, element, attrs) {
            $scope.$watch(attrs['ngModel'], function (newValue) {
                if (newValue) {
                    element[0].value = newValue[attrs['labelField']];
                }
            })
        }
    }
})

通过传递要在指令中显示的字段来使用它

<input type="text" ng-model="myobject" label-field="myfield">

例如要在 $scope.user 中存储一个像 {name:"John","email":"a@a.a"} 这样的对象,您可以这样使用它:

<input type="text" ng-model="user" label-field="name">

解决方法很简单。您使用的 "form name" 与您要放置的对象相同。将 "Form name" 更改为一个不同的名称="formAddCreditoBuscar"

<form class="form-horizontal" role="form" name="formAddCreditoBuscar" id="addCreditoBuscar" ng-controller="AddCreditoAppController">

那么你的问题就会消失