这是我填充表格并将复选框附加到控制器
的方法 <tr ng-repeat="key in queryResults.userPropNames">
<td><input type="checkbox"
data-ng-checked="selectedKeys.indexOf(key) != -1"
data-ng-click="toggleSelect(key)">
</td>
<td>{{key}}</td>
<td ng-repeat="user in queryResults.users">
{{user.properties[key]}}
</td>
</tr>
这就是我的HTML
按钮看起来
<div>
<span ng-if="!validKeys" class="button-terminal primary save-user-keys"
data-disabled="false">Save Keys</span>
<span ng-if="validKeys" class="button-terminal primary save-user-keys"
data-ng-click="saveUserKeys()">Save Keys</span>
</div>
我的控制器看起来像
$scope.toggleSelect = function (attribute) {
if ($scope.selectedKeys.indexOf(attribute) === -1) {
$scope.selectedKeys.push(attribute);
} else {
$scope.selectedKeys.splice($scope.selectedKeys.indexOf(attribute), 1);
}
};
$scope.saveUserKeys = function() {
$scope.customAttributes.mappingForUser = $scope.selectedKeys;
$scope.saveMappings();
};
$scope.validKeys = !!$scope.selectedKeys;
但我的按钮始终处于启用状态,即使我取消选中所有复选框
也是如此此代码有什么问题?
谢谢
答案 0 :(得分:2)
$scope.selectedKeys
是一个数组,即使没有选择键也是如此。但是空数组是真实的(!![] // => true
)。
一种解决方法是检查selectedKeys
的长度:
$scope.validKeys = $scope.selectedKeys && $scope.selectedKeys.length;
或者,如果分配validKeys
只是为了让视图正确呈现,那么您可以在视图中将ngIf
更新为ng-if="selectedKeys.lengh"
答案 1 :(得分:0)
如果你打印validKeys(即{{validKeys}},你是否看到它在true / false之间变化?另外,如果我理解正确,你应该测试validKeys的长度 - 如果高于0,启用按钮,否则禁用它。