我有一个列出一组列表的菜单:
<ul>
<li ng-repeat="group in getData">
<a ng-click="groupId = group.id">{{group.id}}</a>
</li>
</ul>
点击该项目,应该更新groupId
,但显然不是。{/ p>
我还创建了一个过滤器,可以从groupId
获取值:
Data.query(function(data) {
$scope.getData = data;
$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId});
$log.debug($scope.groupId);
$log.debug($scope.currentGroup);
}, function(reason) {
$log.error(reason)
});
这应该过滤以下列表以仅显示具有所选groupId
的项目:
<tr ng-repeat="list in currentGroup.lists">
<td>{{list.name}}</td>
</tr>
然而,它也没有用。我可以在控制台中记录正确的数组,但表中没有显示任何数据。
请看一下这个Plunker。
答案 0 :(得分:1)
在您的Plunker中,您可以像这样使用它
void myFunc_impl(A& aPart, B& bPart); // aPart and bPart are from the same object.
template <typename T>
void myFunc(T& obj) {
// static_assert to have better error messages
static_assert(std::is_base_of<A, T>::value, "T should inherit from A");
static_assert(std::is_base_of<B, T>::value, "T should inherit from B");
// Forwarding to implementation
myFunc_impl(obj, obj);
}
因为currentGroup也是一个数组
答案 1 :(得分:1)
您的代码存在多个问题。这是2:
ng-repeat
创建了自己的子范围,因此当您执行ng-click="groupId = group.id"
时,您要分配子范围groupId
,您应该设置父级的范围:
<a ng-click="$parent.groupId = group.id">{{group.id}}</a>
但这看起来并不那么好;尝试使用as
syntax,或从函数中分配。
$filter
会返回一个数组,因此您必须选择第一个元素才能正确分配currentGroup
:
$scope.currentGroup = $filter('filter')(data, {id: $scope.groupId})[0];
这是一个修剪这两个的plunker: