AngularJS:为什么我不能直接打印模型变量(而不是使用$modelValue属性)?



在我看来,我有这样的形式:

<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属性)来检索(在控制器中)定义的(在视图中的表单中)模型变量

<input name=msg ng-model="form_data.msg">使用此标记,输入的值将在控制器作用域的form_data.msg属性中更新。[form_data是一个对象]。

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

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

我在jsfiddle中使用了您的代码,它很有效,只做了一些更改,我只定义了应用程序并使用

{{form1.msg}}

以打印该值。

这是jsfiddle:

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

最新更新