Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向同一对象的属性添加新值_Javascript_Angularjs_Angularjs Scope_Javascript Objects - Fatal编程技术网

Javascript 向同一对象的属性添加新值

Javascript 向同一对象的属性添加新值,javascript,angularjs,angularjs-scope,javascript-objects,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",

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

我明白了

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>

{event.id}}日期:{{session.Date}
可用性:{{session.Availability}}
添加

不会更改
$scope.cart.sessionsbeagin=$scope.sessions[indexItem].date
$scope.cart.sessionsbeagin+=$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

您需要将字符串转换为当前值,如下所示:

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

// and then add the value itself:
$scope.cart.sessionsBegin += $scope.sessions[indexItem].date;
顺便说一句,通常你会希望那些
sessionbegin
值的列表成为一个数组,这将更容易使用。在这种情况下,我建议:

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

这对你有用吗

 $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);
          }
}

尝试角度延伸这几乎是工作。。。当然,我完全同意:最好的办法是将元素推送到一个数组中。出现的情况是,我只添加一次会话…我需要根据用户单击的相同时间添加会话。。如果用户在同一会话(列表上)上单击3次,则需要在阵列上推送3个具有相同值日期的会话。很抱歉,我不明白从这个描述中,您试图实现什么。你能解释一下吗?或者扩展示例(例如正在执行的操作以及生成的数据结构)?使用您的代码,每次单击我存储一个会话。这类
对象{id=0,title=“Rolling Stones”,sessionsbeagin=“1443564000000”}
单击的原因是存储用户已单击的相同会话数,因此如果用户单击第一个会话(“1443564000000”)3次,对象必须如下所示:
对象{id=0,title=“Rolling Stones”,sessionsBegin=[“1443564000000”、“1443564000000”、“1443564000000”]}