我有一个按钮,需要为对象属性添加一些值。我发现的问题是我每次点击都会创建新对象。 我需要的是将新值添加到特定对象的特定属性。
我收到了这个
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 }}  
Availability: {{session.availability}}  
<a ng-click="addItem($index, session.title);" ng-show="addMore">ADD </a>
</div>
</div>
</div>
</div>
答案 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);
}
}