【问题标题】:AngularJS: Why I can't print a model variable directly (instead of using $modelValue property)?AngularJS:为什么我不能直接打印模型变量(而不是使用 $modelValue 属性)?
【发布时间】:2015-06-04 23:34:18
【问题描述】:

在我看来,我有这个表格:

<form name="form1">
    <input name="msg" id="msg" ng-model="form_data.msg">
</form>

在我的控制器中,我通过

获取输入内容
var message= $scope.form1.msg;

但是,当我插入一些文本(例如“test_abc”)并尝试打印输入内容(在控制器内)时,我得到一个对象而不是实际值。其实

console.log(messageToSend);

给出这个输出

[DEBUG] 消息 >>: [object Object] controllers.js:646 Object {$viewValue: "test_abc", $modelValue: "test_abc", $$rawModelValue: "test_abc", $validators: Object, $asyncValidators: Object…}

当然,我可以只获取 $modelValue,但我注意到(有时)我可以使用模型值(仅通过使用 $scope.modelVarName)而不是打印它。 对不起,如果这很模糊,但我现在找不到具体的例子。

但是,总结一下,我需要了解:有没有办法(除了使用 .$modelValue 属性)来检索(在控制器中)定义的模型变量(在视图中的表单中) ?

【问题讨论】:

  • 为什么不使用$scope.form_data.msg 从输入中获取价值?或者这个问题对我来说不是很清楚。
  • 你可能是对的。我今晚会检查一下。我不确定我是否粘贴了错误的代码或在代码中犯了该错误

标签: angularjs


【解决方案1】:

&lt;input name=msg ng-model="form_data.msg"&gt; 使用此标记,输入的值将在控制器范围的form_data.msg 属性中更新。 [form_data 是一个对象]。

Angular 将更新控制器作用域form1.msg 中输入字段的验证相关信息。这里form1 是表单的名称,msg 是消息的名称。 这不是实际模型。你的实际型号是form_data.msgform1.msg 将包含验证相关信息。

如果要打印模型,请使用 form_data.msg 而不是 form1.msg

【讨论】:

  • 我可能确实犯了这个错误。我今晚会试试这个。
  • 你能澄清一下验证的事情吗?我没有得到在 ng-model 指令中使用 form.something 和使用 $error 来显示错误(我确实使用过)之间的联系
  • 显示验证结果的错误消息,使用$scope._formName_._inputName.对象的详细信息。要使用输入元素的值,请使用$socpe._modelVar_,其中_modelVar_ng-model 属性值。
【解决方案2】:

我在 jsfiddle 中使用了你的代码,它工作正常,稍作改动,我只是定义应用程序并使用

{{form1.msg}}

打印值。

这是 jsfiddle:

http://jsfiddle.net/diegounanue/5bbkmk3m/

【讨论】:

  • 我正在使用 Angular Material 框架,据我所知,它通过模型处理标签,但不允许在输入中使用
猜你喜欢
  • 2016-04-01
  • 2022-01-17
  • 2013-05-12
  • 1970-01-01
  • 2016-10-17
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 2020-05-17
相关资源
最近更新 更多