【问题标题】:[[object Object]] appear on textbox in angularjs [closed][[object Object]] appear on textbox in angularjs [closed]
【发布时间】:2015-04-18 16:20:15
【问题描述】:

[object Object] 自动作为值出现在我表单中的每个文本框中。我可以知道出了什么问题吗?它出现在我在标签中插入属性 name="searchr" 之后。谢谢。

在 search.htm 中:

<form ng-submit="search()" ng-controller="formcontrol" name="searchr">
<input type="search" placeholder="Search here" id="text_search" ng-model="searchr.text" name="text">

在 controller.js 中:

.controller('SearchCtrl', function($scope, $http) { }

【问题讨论】:

  • 对我来说听起来像是您可能将对象绑定到文本框而不是字符串。你的 html 和控制器代码是什么样的?
  • 我们无法在没有看到任何行的情况下调试代码。
  • 这可能与您的ng-model="searchr.text" 有关。 searchr 是什么?我在你表单的 name 属性中看到了,但是你有那个名字的 js 对象吗?
  • 我也不认为那是与该表单配套的正确控制器。你有一个名为 FormControl 的控制器,就像 ng-controller 属性所指的那样?

标签: angularjs angularjs-scope


【解决方案1】:
<form name="searchr">

这将创建一个 FormController 类型的对象,并将其存储在名称 searchr 下的作用域中。

<input name="text">

这会创建一个 NgModelController 类型的对象并将其存储在 FormController 的文本属性中。

<input ng-model="searchr.text">

这告诉 angular 该字段的模型(即必须在该字段中显示的文本)是searchr.text,但由于上述原因,searchr.text是 angular 创建的 NgModelController 对象,它是angular创建的FormController对象。

不要为表单使用与存储表单模型的名称相同的名称。

【讨论】:

  • 这个答案为我指明了正确的方向,解决了我不小心将相同名称用于非常大的不同输入标签的问题。提交/保存对象时,一个输入字段的值更改为“[object Object]”,但我无法将此值记录到任何地方的控制台。相反,我在调试时得到了预期的值。在这种情况下,我使用 Angular 8。谢谢。
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 2022-12-15
  • 2015-07-21
  • 2022-12-02
  • 2012-05-14
  • 2018-04-22
  • 1970-01-01
  • 2022-12-01
相关资源
最近更新 更多