我使用div
在ng-click
isVisible
上切换$scope.Objectlist.push(data);
。我遇到的问题是,每次单击按钮,它都会运行<tr ng-repeat="object in objectlist">
<td>{{object.id}}</td>
<td><button ng-click="pushData(object.id)">View</button></td>
</tr>
。我想只在第一次点击时推送它,但同时我希望它在推取其他对象时推送它。我在每一行旁边都有一个按钮,每行都有一个不同的id,它将作为按钮功能的参数传递。
HTML:
$scope.objectlist = [];
$scope.isVisible = false;
$scope.pushData= function(id) {
$http.get("some variables being passed on here").success(function(data, status, headers, config){
$scope.objectlist.push(data);
}).error(function(data, status, headers, config){
alert("Error");
});
$scope.isVisible = ! $scope.isVisible;
};
JS:
self.grid.setSpacing(0)
我有多个不同的对象,有些是空的,有些不是,所以这个函数不能只检查列表的长度
答案 0 :(得分:4)
如何存储每个对象id的可见性(我没有测试它):
<强> HTML 强>
<tr ng-repeat="object in objectlist">
<td>{{object.id}}</td>
<td><button ng-click="pushData(object.id)">View</button></td>
</tr>
<强> JS 强>
$scope.objectlist = [];
$scope.isVisible = false;
var store = {}; // Store visibility (boolean) per object id
$scope.pushData= function(id) {
// If not stored yet
if (!store[id]) {
$http.get("some variables being passed on here").success(function(data, status, headers, config){
$scope.objectlist.push(data);
store[id] = true; // Store it and set true for the visibility
}).error(function(data, status, headers, config){
alert("Error");
});
}
$scope.isVisible = !store[id]; // Set the visibility depending on if the object is already in the store or not
};
我不确定$scope.isVisible = !store[id];
,因为我真的不知道它在视图中的交互。但类似的东西可以做到这一点
答案 1 :(得分:2)
试试这个,
$scope.objectlist = [];
$scope.isVisible = false;
var uniqueIDs = {};
$scope.pushData= function(id) {
$http.get("some variables being passed on here").success(callbackFn)
.error(function(data, status, headers, config){
alert("Error");
});
$scope.isVisible = !uniqueIDs[id];
};
var callbackFn = function(id){
if(!uniqueIDs[id]){
$scope.objectlist.push(data);
uniqueIDs[id] = true;
}
};