2013-10-31 42 views
0

在我的控制器,我有一个变量:AngularJS删除元素时值改变

$scope.myVar = { "id": 13459045, "firstName": "Joe", "lastName": "McCarthy", "createdBy": 0, "status": "active", "dollarValue": 0 } 

在我的网页,我已经输入字段映射到变量:

<input ng-model="myVar.id" class="checknumberrange" /> 

在“checknumberrange”类是一个指令,用于解析输入值以在输入字段和模型中设置数值。在处理这条指令时,变量$ scope.myVar中的一些元素将从变量中移除。

$scope.myVar = { "firstName": "Joe", "lastName": "McCarthy", "createdBy": 0, "status": "active", "dollarValue": 0 } 

在该指令的情况下,我发现,没有被提供一个返回值时被移除的值,但你会认为,这将设置键为空值,无法删除从变量完全配对。这发生在我的项目的其他部分,并且当您在输入字段中写入时,值将回来(仅可能再次被删除),但我不明白为什么会发生这种情况。使用角1.2.0 RC3,以下html:

<input ng-model="myVar.dollarValue" ng-blur="myVar.dollarValue=myVar.dollarValue.toFixed(2)" /> 

不会允许我更改值。更改该值将立即从变量中删除配对,并且如果将焦点置于输入字段,然后在其他地方,则第一次该字段将从'0'更新为'0.00',并且第二次将导致配对被删除。

我真的很想理解为什么配对被删除,所以我可以防止这种情况发生在我的工作中。

+1

至少对于我来说,它不清楚你问什么,你能不能请张贴小提琴/ Plunker您的问题? –

+0

告诉我们你的checknumberrange指令的执行情况 – bekite

+0

**更新:** http://plnkr.co/edit/0LGd6z?p=preview这是一个通过ng-blur显示删除配对之一的调用者。该指令非常长,但是当我使用'modelCtrl。$ setViewValue(var)时做了同样的事情。 。modelCtrl $渲染();”而不提供随ModelCtrl更改而返回的值。 – C1pher

回答

1

Angular解析你为ng-blur放置的东西,它无法处理所有的javascript。尝试使用在你的控制器(plnkr)创造了一个功能:

$scope.onBlur = function() 
{ 
    $scope.myVar.dollarValue = Number($scope.myVar.dollarValue).toFixed(2) 
} 

HTML:

<input ng-model="myVar.dollarValue" ng-blur="onBlur()" />