我想在本地存储不为空时显示编辑/删除按钮。
在我的view.html中,我尝试:
<div ng-controller="MainController">
<button ng-disabled="localStorage.getItem('wimmtkey') !== null" > Edit</button>
</div>
然后在review.controller.js
中,我有这个函数:
function submit() {
if($rootScope.name!=null) {
var temp={
"name":$rootScope.name,
"surname":$rootScope.surname,
"email":$rootScope.email
}
$scope.localArray.push(temp);
localStorageService.set("wimmtkey", $scope.localArray);
$scope.obtained_array = localStorageService.get("wimmtkey");
var Results = UniversalService.PostReview(JSON.stringify(JSONObject));
}
}
但即使我隐姓埋名,这个按钮也总是可见的。这会是什么问题呢?
发布于 2017-06-26 21:20:46
该按钮将始终显示,因为您使用的是ngDisabled
而不是ngShow
、ngHide
或ngIf
。当它的计算结果为true
时,ngDisabled
仅仅表示按钮不可点击。
正如我从条件中看到的,当localStorage
中存在wimmtkey
项时,该按钮将被禁用。从你的描述来看,这似乎与你试图实现的目标相反。
另外,您要向$scope
对象添加localStorage
吗?您的代码没有显示这一点,只有当它作为$scope.localStorage
存在时,才能在视图中使用它。如果不是这样,条件永远不会计算为true
(因为它实际上抛出了一个被Angular静默的错误),并且按钮永远不会被禁用。
发布于 2017-06-26 21:42:27
您可以为localStorage.wimmtkey添加一个包装器:
<div ng-controller="MainController">
<button ng-disabled="LS_wimmtkey!==null">Edit</button>
</div>
var MainController = function($scope) {
$scope.LS_wimmtkey = localStorage.getItem('wimmtkeys');
$scope.$watch("LS_wimmtkey", function() {
localStorage.setItem('wimmtkeys', $scope.LS_wimmtkey);
});
};
在提交函数时,必须使用$scope属性:
function submit() {
//your code is here
$scope.LS_wimmtkey = $scope.localArray;
//your code is here
}
https://stackoverflow.com/questions/44768539
复制