2014-11-25 37 views
0

我有一個奇怪的問題TypeError: Cannot read property 'allowed' of undefined最後一個元素在$scope.leaveTypeTypeError:無法讀取屬性,但屬性存在

更新:

由於@dusky它解決了這一問題,但現在我得到以下控制檯錯誤,但應用程序是在這裏工作是截圖

控制器的完整代碼here

它似乎沒有得到$scope.myLeaves[id]

$scope.myLeaves = { "1": 18, "2": 12, "3": 0, "4": 0, "5": 1, "6": 1, "7": 1}; 

enter image description here

請幫助我在這裏錯過了。

$scope.leaveType = [ 
    { "id": "1", "name": "Paid Leave", "allowed": 18}, 
    { "id": "2", "name": "Caual Leave", "allowed": 12}, 
    { "id": "3", "name": "Maternity Leave", "allowed": 0}, 
    { "id": "4", "name": "Paternity Leave", "allowed": 0}, 
    { "id": "5", "name": "Celebration Leave", "allowed": 1}, 
    { "id": "6", "name": "Compensatory Off","allowed": 1}, 
    { "id": "7", "name": "Optional Holiday Leave", "allowed": 1} 
    ]; 

    $scope.myLeaves = { "1": 18, "2": 12, "3": 0, "4": 0, "5": 1, "6": 1, "7": 1}; 

    $scope.taken = function (index) { 
     var allowed = $scope.leaveType[index].allowed, 
      leaveTypeId = $scope.leaveType[index].id, 
      taken = (parseFloat(allowed,10)) - (parseFloat($scope.myLeaves[leaveTypeId], 10)); 

     return taken; 
    } 
    //Get remaining leaves in a category 
    $scope.remaining = function (index) { 
     var allowed = $scope.leaveType[index].allowed, 
      leaveTypeId = $scope.leaveType[index].id, 
      remain = (parseFloat(allowed,10)) - $scope.taken(leaveTypeId, allowed); 

     return remain; 
    } 

這裏是Plunker

+0

'依然= ... - $ scope.taken(leaveTypeId ,允許);',但是'leaveTypeId = $ scope.leaveType [index] .id;':no,'$ scope.leaveType [7]'不存在。 – Blackhole 2014-11-25 09:57:23

+0

我從'$ scope.myLeaves = angular.fromJson($ scope.leaveSummary.allocation);'從存儲爲字符串的db獲取'myLeaves',它能否成爲'TypeError:Can not read property'1'的原因未定義'7' – Saqueib 2014-11-25 10:52:10

回答

1

你剩下的功能是錯誤的。 $scope.taken將索引作爲參數。順便說一下:parseFloat不需要2個參數(parseInt)。這裏不需要,因爲已經是一個數字。

的錯誤是在這條線:

remain = (parseFloat(allowed,10)) - $scope.taken(leaveTypeId, allowed); 

它應該是:

remain = allowed - $scope.taken(index); 

所以就變成:

$scope.remaining = function (index) { 
     var allowed = $scope.leaveType[index].allowed, 
      remain = allowed - $scope.taken(index); 

     return remain; 
    } 
+0

不確定爲什麼某人-1這個,看起來對我來說是正確的。 – 2014-11-25 10:01:51

+0

感謝它現在工作,但在控制檯得到'錯誤:[$ interpolate:interr]無法插值: {{剩餘($索引)}} TypeError:無法讀取屬性'1'到'7'未定義' – Saqueib 2014-11-25 10:09:57

+0

@Saqueib我建議使用leaveType Ids而不是行索引。我給你做了一個[關於Plunker的例子](http://plnkr.co/edit/RerVBdd9bfh4Amky4udr)。這個對我有用。 – dusky 2014-11-25 10:26:22

相關問題