我有以下两个指令。一个是查询构建器,另一个是查询行。查询构建器指令使用ng repeat来列出数组中的查询行。添加按钮有效,但是我想要包含一个删除按钮。但是,问题是我似乎无法获得$ index,因此我可以将它作为参数传递给delete函数(即delete($ index))
以下是JS代码
.directive('queryBuilder', function() {
return {
restrict: 'E',
scope: {},
controller: function($scope) {
$scope.rows = [{}]
//add method not used - delete in future
$scope.add = function() {
$scope.rows.push({})
}
$scope.$on('addRowRqst', function(evt) {
// evt.stopPropagation()
console.log('add rqst received')
$scope.rows.push({})
});
$scope.$on('deleteRowRqst', function(evt) {
// evt.stopPropagation()
console.log('delete rqst received')
$scope.rows.push({})
});
},
templateUrl: 'queryBuilderTemplate.html',
}
}).directive('queryRow', function() {
return {
scope: {},
restrict: 'EA',
templateUrl: 'queryRowTemplate.html',
controller: function($scope) {
$scope.addRqst = function() {
console.log('addRowRqst click')
$scope.$emit('addRowRqst')
};
$scope.deleteRqst = function(index) {
console.log('deleteRowRqst click')
$scope.$emit('deleteRowRqst')
};
},
link: function(scope, elem, attrs) {
}
}
这是查询构建器模板的HTML代码
<form role="form">
<query-row ng-repeat="row in rows track by $index"></query-row>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
这是删除按钮(查询行模板的一部分)。当我尝试将其作为参数传递时,这里的$ index是'undefined'
<button class="btn btn-default" ng-click="deleteRqst($index)" type="submit">Delete Row</button>
这是掠夺者 http://plnkr.co/edit/rDkXpIgiOSoNvLNPsVbP
我的目标:获取删除按钮以使用并删除所选行
答案 0 :(得分:2)
这是因为$ index在父作用域上,但是在query-row指令中使用了isolate作用域。
尝试以下方法:
<button class="btn btn-default" ng-click="deleteRqst($parent.$index)" type="submit">Delete Row</button>
或者,删除隔离范围。