2016-09-28 60 views
0

到目前爲止我曾經嘗試這樣做:

if ($scope.flag) { 
    $scope.partialPricing.push([$scope.p]); 
    $scope.flag = false; 
} else { 
    for (var i = 0; i < $scope.partialPricing.length; i++) { 
     console.log("finding object = " + $scope.partialPricing); 
     if ($scope.partialPricing[i].type != $scope.p.type) { 
      $scope.partialPricing.push([$scope.p]); 
      break; 
     } else { 
      console.log("Already Given . Please Clear ."); 
     } 
    } 

} 

問題是,當它進入else條件,它就會 $scope.partialPricing = [Object Object]也,$scope.partialPricing[i].type = undefined

我的目標是防止用戶給兩次相同的類型。這裏的類型是每小時,每月,每週。

他只能設置一次該值。告訴我解決方案還是我能做到的其他方式?

+0

你的$ scope.flag呢?默認設置爲true還是false? – tarulen

+0

$ scope.flag = true –

回答

0

你如果在循環條件將不能正常工作:將元素添加到列表中,如果它的類型是從列表中的第一個元素不同,獨立列表的所有的休息。

最簡單的是做一個查找函數如下:

function lookupByType(type) { 
    for (var i = 0; i < $scope.partialPricing.length; i++) { 
    if ($scope.partialPricing[i].type == type) { 
     return true; 
    } 
    } 
    return false; 
} 

,然後用它作爲(這裏沒有for循環)如下:

if (lookupByType($scope.p.type)) { 
    console.log("Already Given . Please Clear ."); 
} else { 
    $scope.partialPricing.push($scope.p); 
} 

關於$scope.flag,我假設你意識到你使用它來繞過驗證,你可能有一個很好的理由。但是,如果目標只是插入第一個元素,則不需要它:如果目前列表爲空,則查找函數將始終返回false

編輯:您也有類型問題:您的定價列表是一個對象數組數組,並且您將其用作一組對象。您可能想要使用後者,因此您需要push($scope.p)而不是push([$scope.p])

+0

您的solutuion存在一個問題....它沒有在數組中追加新元素 –

+0

呃?你的意思是'$ scope.partialPricing.push($ scope.p)'這一行;'永遠不會被調用?它應該是。我假設$範圍是一個全局變量,也許我錯了嗎? – tarulen

+0

你能幫我使用團隊查看器嗎? –

0

您可能會切換您的其他部分並檢查是否相等,因爲這是退出循環所需的。然後打破並根據檢查進行下一步操作。

if ($scope.flag) { 
    $scope.partialPricing.push([$scope.p]); 
    $scope.flag = false; 
} else { 
    var found = false; 
    for (var i = 0; i < $scope.partialPricing.length; i++) { 
     console.log("finding object = " + $scope.partialPricing); 
     if ($scope.partialPricing[i].type === $scope.p.type) { 
      console.log("Already Given . Please Clear ."); 
      found = true; 
      break; 
     } 
    } 
    if (!found) { 
     $scope.partialPricing.push([$scope.p]); 
    } 
} 

否則,你可以使用Array#some,爲什麼你需要按 「$ scope.P」 到partialPricing進行檢查

if ($scope.flag) { 
    $scope.partialPricing.push([$scope.p]); 
    $scope.flag = false; 
} else { 
    var found = false; 
    if ($scope.partialPricing.some(function (price) { return price.type === $scope.p.type; })) { 
     console.log("Already Given . Please Clear ."); 
    } else { 
     $scope.partialPricing.push([$scope.p]); 
    } 
} 
0

Below code may be helpful

。任何與您處理此行有關的邏輯?

$ scope.partialPricing.push([$ scope.p]);