angularjs 次重复 SELECT 全部
angularjs ng-repeat SELECT ALL
我有两列使用 ng-repeat
的复选框,一列称为 'Calc.',另一列称为 'Calc. Final'。
我有一个按钮,我希望在单击时匹配 Calc. Final
中 Calc.
的选择。
函数:
function updateCalcFinal() {
vm.desktop.comparables.comp.forEach(e => {
e.calcFinal = e.calc;
console.log([e.calcFinal, e.calc]);
});
}
HTML:
<button class="btn btn-sm btn-primary pull-right mt5 mb5"
ng-disabled="deskCtrl.loading"
ng-click="deskCtrl.updateCalcFinal()">
<i class="glyphicon glyphicon-ok"></i>
Igualar Calc.
</button>
以上代码在 console.log
中绑定,但未在视图中更新。任何帮助将不胜感激。
我的经验是,当控制台更新而不是视图时,存在一些异步效果导致差异。好像数据更新了但是angularjs不知道它更新了
我建议查找 $scope.$apply()
建议参考:
这是一个工作的 Plunker,它演示了差异和实现:https://plnkr.co/edit/vdLJUg2LNIcBz5ng1kwr?p=preview
$scope.withApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
$scope.$apply() <------ $scope.$apply()
},1000)
}
$scope.withOutApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
},1000)
apply() 函数在异步回调结束时被调用,我认为您正在包装不起作用的异步操作。
我有两列使用 ng-repeat
的复选框,一列称为 'Calc.',另一列称为 'Calc. Final'。
我有一个按钮,我希望在单击时匹配 Calc. Final
中 Calc.
的选择。
函数:
function updateCalcFinal() {
vm.desktop.comparables.comp.forEach(e => {
e.calcFinal = e.calc;
console.log([e.calcFinal, e.calc]);
});
}
HTML:
<button class="btn btn-sm btn-primary pull-right mt5 mb5"
ng-disabled="deskCtrl.loading"
ng-click="deskCtrl.updateCalcFinal()">
<i class="glyphicon glyphicon-ok"></i>
Igualar Calc.
</button>
以上代码在 console.log
中绑定,但未在视图中更新。任何帮助将不胜感激。
我的经验是,当控制台更新而不是视图时,存在一些异步效果导致差异。好像数据更新了但是angularjs不知道它更新了
我建议查找 $scope.$apply()
建议参考:
这是一个工作的 Plunker,它演示了差异和实现:https://plnkr.co/edit/vdLJUg2LNIcBz5ng1kwr?p=preview
$scope.withApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
$scope.$apply() <------ $scope.$apply()
},1000)
}
$scope.withOutApply = function(){
$scope.name = 'World';
console.log('button pressed')
setTimeout(function(){
console.log('$scope.name changed to async')
$scope.name = 'async'
},1000)
apply() 函数在异步回调结束时被调用,我认为您正在包装不起作用的异步操作。