2013-10-31 38 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()" />