[[object Object]] 输入文本 angularjs
Posted
技术标签:
【中文标题】[[object Object]] 输入文本 angularjs【英文标题】:[[object Object]] in input text angularjs 【发布时间】:2015-07-21 03:23:53 【问题描述】:<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
【问题讨论】:
你得到这个是因为addCreditoBuscar.buscar
是一个对象。
Access / process (nested) objects, arrays or JSON的可能重复
把这个放在输入旁边,看看对象在视图中的样子<pre>addCreditoBuscar.buscar | json</pre>
【参考方案1】:
解决方案很简单。您使用的“表单名称”与要放置的对象相同。将“表单名称”更改为其他名称,例如 name="formAddCreditoBuscar"
<form class="form-horizontal" role="form" name="formAddCreditoBuscar" id="addCreditoBuscar" ng-controller="AddCreditoAppController">
那么你的问题就会消失
【讨论】:
最佳答案在这里。 啊,这是因为愚蠢的复制粘贴错误。改编了[ngModel]
链接,但忘记了名字。【参考方案2】:
您的输入元素将您提供的值强制转换为字符串。您的值是一个对象,因此它将其强制转换为该对象的字符串值 ([[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"
【讨论】:
【参考方案3】:您可以通过在每次更改模型值时显式更改 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">
【讨论】:
以上是关于[[object Object]] 输入文本 angularjs的主要内容,如果未能解决你的问题,请参考以下文章
Object.keys映射返回对象Object而不是ReactJS中的文本输入表单中的值
ReactNative问题随笔-undefined is not an object
修复 null is not an object error in react native
unity报错NullReferenceException: Object reference not set to an instance of an object
[ES2017] Iterate over properties of an object with ES2017 Object.entries()
关于Unity3D的错误:NullReferenceException: Object reference not set to an instance of an object 的解答