Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ngModel格式化程序更改$scope_Javascript_Angularjs_Angularjs Directive_Angularjs Scope_Angularjs Ng Model - Fatal编程技术网

Javascript ngModel格式化程序更改$scope

Javascript ngModel格式化程序更改$scope,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-model,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Model,具有带有ngModel的输入,其中包含$formatters和$parsers- link: function(scope, element, attrs, ngModel) { //format text going to user (model to view) ngModel.$formatters.push(function(obj) { return obj.first; }); } 在我对输入进行任何更改之后,我在范围上错过了这个模型,意思是

具有带有
ngModel
输入
,其中包含
$formatters
$parsers
-

link: function(scope, element, attrs, ngModel) {
    //format text going to user (model to view)
    ngModel.$formatters.push(function(obj) {
        return obj.first;
    });
}
在我对输入进行任何更改之后,我在范围上错过了这个模型,意思是-
{{{person.first}
不显示任何内容

以下是完整的代码-

var myAppModule=angular.module('myApp',[]);
控制器('myCtrl',函数($scope){
$scope.person={
第一个:'爱丽丝',
最后一句:“鲍勃”
}
})
.directive('myDrtv',function(){
返回{
限制:“A”,
要求:'ngModel',
链接:功能(范围、元素、属性、模型){
var _ngModel=ngModel;
//格式化发送给用户的文本(要查看的模型)
ngModel.$formatters.push(函数(obj){
首先返回obj;
});
//设置用户文本格式(视图到模型)
ngModel.$parsers.push(函数(值){
返回值;
});
}
}
})

名称:
{{person.first}
将输入更改为以下内容:

<input my-drtv ng-model="person.first" type="text">
然后在
链接中
,观察更改并更新
人员

scope.$watch('fullname', function(nv) {
  person.first = extractFirstName(nv);
  person.last = extractLastName(nv);
});

(我把它留给您来提供
提取
函数)。

谢谢您通知我,它从对象变为字符串。@URL87,解释一下为什么要这样做。这不是$formatters的典型用法,$parsersI更新了我的答案,假设您希望能够对名字和姓氏使用单个编辑字段。
scope.$watch('fullname', function(nv) {
  person.first = extractFirstName(nv);
  person.last = extractLastName(nv);
});