Javascript 智能表格-预选特定行
我正在使用智能表,需要预选一行 因此,在加载列表后,当我到达要选择的项目时,我循环到列表中并设置Javascript 智能表格-预选特定行,javascript,angularjs,smart-table,Javascript,Angularjs,Smart Table,我正在使用智能表,需要预选一行 因此,在加载列表后,当我到达要选择的项目时,我循环到列表中并设置isSelected属性: // Preselect a row for (var i = 0, len = scope.displayCollection.length; i < len; i += 1) { var person = scope.displayCollection[i]; if (person.firstName === 'Blandine') {
isSelected
属性:
// Preselect a row
for (var i = 0, len = scope.displayCollection.length; i < len; i += 1) {
var person = scope.displayCollection[i];
if (person.firstName === 'Blandine') {
person.isSelected = true;
scope.selected = person;
break;
}
}
//预选一行
对于(变量i=0,len=scope.displayCollection.length;i
它工作正常,但当我想选择另一行时,预选的行不是未选择的!我必须点击它手动取消选择,然后才能正确选择另一行
下面是一个解释问题的JSFIDLE:
我尝试了那里提出的建议,但没有成功
谢谢我终于找到了解决方案: 不再使用
$watch
,而是在每行上单击ng
:
<tr st-select-row="row" ng-repeat="row in displayCollection" ng-click="selectRow(row)">
在选择单击的行之前,我手动取消选择所有行:
scope.selectRow = function (row) {
for (var i = 0, len = scope.displayCollection.length; i < len; i += 1) {
scope.displayCollection[i].isSelected = false;
}
row.isSelected = true;
scope.selected = row;
}
scope.selectRow=函数(行){
对于(变量i=0,len=scope.displayCollection.length;i
工作区:
如果有人有更好的解决方案,我愿意接受其他建议:)因此我查看了他们的解决方案,因为您可以看到它调用父指令stTable中的函数。行
绑定到一个单击处理程序…该处理程序从stTable
调用ctrl.select()
函数。此函数依次存储最后选择的行
。这是您的问题,因为此事件不会触发,它从不设置最后单击的行,因此从不希望删除其类。我为您重新编写了指令,以便它能够实现您试图实现的目标,但它可以很容易地得到改进
app.directive('prSystem', function () {
return {
restrict: 'A',
require: '^stTable',
scope: {
row: '=prSystem'
},
link: function (scope, element, attr, ctrl) {
var mode = attr.stSelectMode || 'single';
if(scope.row.isSelected) {
scope.row.isSelected = undefined;
ctrl.select(scope.row, mode);
}
element.bind('click', function () {
scope.$apply(function () {
ctrl.select(scope.row, mode);
});
});
scope.$watch('row.isSelected', function (newValue) {
if (newValue === true) {
element.addClass('st-selected');
} else {
element.removeClass('st-selected');
}
});
}
}
})
我不想重新定义现有的指令,但我更喜欢这个解决方案。ThanksI使用了这个方法,为了避免迭代,最好使用数组的索引,并在删除isSelected值时使用它。更新的JSFIDLE: