2
<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

4

3 回答 3

6

解决方案很简单。您使用的“表单名称”与要放置的对象相同。将“表单名称”更改为其他名称,例如 name="formAddCreditoBuscar"

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

然后你的问题就会消失

于 2017-03-26T14:18:26.630 回答
1

您的输入元素强制将您提供给字符串的值。您的值是一个对象,因此它将其强制为该对象的字符串值([[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"
于 2015-05-10T16:40:47.993 回答
0

您可以通过在每次更改模型值时显式更改 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">
于 2015-10-07T11:42:10.063 回答