如何使用控制器动作设置AngularJS中表单字段的值

如何使用控制器动作设置AngularJS中表单字段的值,angularjs,angularjs-scope,Angularjs,Angularjs Scope,如何通过控制器的操作手动设置表单字段的值?在我的例子中,我有一个大约有10个字段的表单。一个表单字段是日期字段,它有一个按钮,用于将其值设置为当前日期,我通过服务获取该日期。我尝试过处理嵌套的范围值,但没有效果。问题是在设置日期字段的值后,其他表单字段/范围值的值将被销毁。要说明这个问题,请参阅下面的JSFIDLE和代码 年龄: 名字: 定名 姓氏: 设定姓氏 函数Ctrl($scope){ $scope.setFirstName=函数(){ $scope.person={ 名字:“国王”

如何通过控制器的操作手动设置表单字段的值?在我的例子中,我有一个大约有10个字段的表单。一个表单字段是日期字段,它有一个按钮,用于将其值设置为当前日期,我通过服务获取该日期。我尝试过处理嵌套的范围值,但没有效果。问题是在设置日期字段的值后,其他表单字段/范围值的值将被销毁。要说明这个问题,请参阅下面的JSFIDLE和代码


年龄:

名字: 定名
姓氏: 设定姓氏
函数Ctrl($scope){ $scope.setFirstName=函数(){ $scope.person={ 名字:“国王” } }; $scope.setLastName=函数(){ $scope.person={ 姓‘孔’ } }; }
每次调用set方法时,都会覆盖整个person对象引用。请注意每次创建新对象的方式。您最可能的意图是:

$scope.setFirstName = function(){
   $scope.person.first_name = 'King';
}

这是可行的,但这在JS的原型继承中是“正确”的吗?请参阅这篇关于直接更新更高级别的作用域属性的帖子:让我知道您的想法。只是想知道您是否对我之前共享的链接有响应?@user1322092在这种情况下,作用域公开了一个person对象,我看不出有任何风险。从你共享的文章中我可以看出,如果你的
名字直接在作用域中,问题就会出现。@EdwinDalorzo:你能看一下这里吗,我想将对象设置为模型,它作为json保存到服务器,稍后打开时它会读取json并映射到模型。模型具有对象,但单选按钮不会基于对象属性进行选择。
$scope.setFirstName = function(){
   $scope.person.first_name = 'King';
}