将新值添加到同一对象的属性

时间:2015-06-18 14:41:27

标签: javascript angularjs angularjs-scope javascript-objects

我有一个按钮,需要为对象属性添加一些值。我发现的问题是我每次点击都会创建新对象。 我需要的是将新值添加到特定对象的特定属性。

我收到了这个

Object { id=0,  title="Rolling Stones",  sessionsBegin="1443564000000"}
Object { id=0,  title="Rolling Stones",  sessionsBegin="1443564000001"}
Object { id=0,  title="Rolling Stones",  sessionsBegin="1443564000002"}

我需要生成的是

Object { id=0,  title="Rolling Stones",sessionsBegin="1443564000000, 1443564000001,1443564000002"}

这在控制器部分:

 $scope.addItem = function(indexItem, title) {
          $scope.cart = {
              "id" : indexItem,
              "title" : title
          }
          if ($scope.cart.id==indexItem){
              $scope.cart.sessionsBegin=$scope.sessions[indexItem].date;
             console.log($scope.cart);
          }
        }

这在局部视图方面:

<div class="row" >
  <div class="large-6 columns" >
  <div class="panel">
    <div ng-repeat="session in sessions">
     {{event.id}} Date:  {{session.date }} &nbsp
     Availability: {{session.availability}} &nbsp
       <a ng-click="addItem($index, session.title);" ng-show="addMore">ADD </a>
    </div>
  </div>  
  </div> 
</div>

3 个答案:

答案 0 :(得分:1)

您需要将字符串连接到当前值,如下所示:

// Add a comma if needed:
$scope.cart.sessionsBegin += ($scope.cart.sessionsBegin) ? ', ' : ''; 

// and then add the value itself:
$scope.cart.sessionsBegin += $scope.sessions[indexItem].date;

顺便说一下。通常你希望这些sessionsBegin值的列表成为一个数组 - 它将更容易使用。在那种情况下,我建议:

if (!$scope.cart.sessionsBegin) {
    $scope.cart.sessionsBegin = [];
}
$scope.cart.sessionsBegin.push($scope.sessions[indexItem].date);

答案 1 :(得分:0)

不会将$scope.cart.sessionsBegin=$scope.sessions[indexItem].date;改为$scope.cart.sessionsBegin+=$scope.sessions[indexItem].date;吗?

在您的代码中,每次按“添加”时都会重新定义购物车对象。虽然。因此,为什么console.log每次都会显示新对象。

$scope.cart = { ... } // this bit of code means you delete the 'old' $scope.cart and redefine it with new values

答案 2 :(得分:0)

这对你有用吗?

 $scope.addItem = function(indexItem, title) {
          $scope.cart = $scope.cart || {
              "id" : indexItem,
              "title" : title
          }
          if ($scope.cart.id==indexItem){
              var sessionAsArray = $scope.cart.sessionsBegin.split(',');
              sessionAsArray.push($scope.sessions[indexItem].date);
              $scope.cart.sessionsBegin=sessionAsArray.join(',');
              console.log($scope.cart);
          }
}