隐藏按钮并在单击按钮时以 Angular 显示数据
Hide button and show data, upon button click, in Angular
不用说,我对 angular 很陌生,因为我正在尝试完成一项相对简单的任务,我来这里寻求一些帮助
我正在使用角度重新创建我们公司的密码库。
这就是我正在努力实现的目标。
页面加载时会显示帐户列表。除密码外,大多数信息都是可见的。我有一个按钮,单击该按钮时,隐藏按钮,查询数据库,记录查询密码的人,并向用户显示密码。密码是明文的,因为它们不是客户帐户或任何敏感密码,我们的员工可以参考如何/在哪里登录我们用于日常业务的各种网站。
我的 HTML 如下所示:
<tr ng-repeat="account in resp.PasswordVaultAccounts">
<td><a href="{{account.URL}}" target="_blank">{{account.Name}}</a></td>
<td>{{account.Username}}</td>
<td><button ng-click="showPassword(account.AccountId);" class="btn btn-primary">View</button><span></span></td>
<td>{{account.Comments}}</td>
</tr>
我的示波器控制器如下所示
$scope.showPassword = function (accountId) {
passwordVaultData.getAccountPassword(accountId)
.$promise
.then(function (r) {
//success
}, function (r) {
//fail
});
}
我的 showPassword() 方法有效并返回正确的密码,但我无法弄清楚如何隐藏按钮并显示密码。
对帐户对象上的密码使用 ng-show 和 ng-hide 指令应该足以修改 UI
<tr ng-repeat="account in resp.PasswordVaultAccounts">
<td><a href="{{account.URL}}" target="_blank">{{account.Name}}</a></td>
<td>{{account.Username}}</td>
<td>
<button ng-hide="account.Password" ng-click="showPassword(account.AccountId);" class="btn btn-primary">View</button>
<span ng-show="account.Password">{{account.Password}}</span>
</td>
<td>{{account.Comments}}</td>
</tr>
至于承诺决议,您希望getAccountPassword返回承诺,我将在下面对其内容做出假设
function getAccountPassword(account) {
var deferred = $q.defer();
$http.get('api/vault/' + account.AccountId).then(function(r) {
deferred.resolve(r);
}, function(r) {
deferred.reject(r);
});
return deferred.promise;
}
$scope.showPassword = function (account) {
getAccountPassword(account.AccountId).then(function(password) {
account.Password = password;
}, function(password) {
account.Password = undefined; // some type of error handling here
});
}
由于承诺是在$http调用的上下文中执行的,因此摘要周期将运行,并且将根据是否填充密码显示元素。
您可以通过 ng-if 或 ng-show/hide 来完成它:
快速示例如下:
<tr ng-repeat="account in resp.PasswordVaultAccounts">
<td><a href="{{account.URL}}" target="_blank">{{account.Name}}</a></td>
<td>{{account.Username}}</td>
<td>
<button ng-if="!account.password" ng-click="showPassword(account);" class="btn btn-primary">View</button><span></span></td>
<span ng-if="account.password">{{password}}</span>
<td>{{account.Comments}}</td>
</tr>
$scope.showPassword = function (account) {
account.password = passwordVaultData.getAccountPassword(account.AccountId)
.$promise
.then(function (r) {
//success
}, function (r) {
//fail
});
}
请看下面的演示
var app = angular.module('app', []);
angular.module('app').
controller('firstCtrl', function($scope) {
$scope.resp = {
PasswordVaultAccounts: [{
AccountId: 1,
URL: "bbc.co.uk",
Username: "Jack",
Comments: "White"
}, {
AccountId: 2,
URL: "bbc.co.uk",
Username: "Mike",
Comments: "Green"
}, {
AccountId: 3,
URL: "bbc.co.uk",
Username: "Tim",
Comments: "Red"
}
]
}
$scope.showPassword = function(account) {
//call you backend and on sucess add that :
// passwordVaultData.getAccountPassword(account.accountId)
// .$promise
// .then(function (r) {
account.showpass = true;
account.pass = account.Username + " password is *****"
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app">
<div ng-controller="firstCtrl">
<table>
<tr ng-repeat="account in resp.PasswordVaultAccounts">
<td><a href="{{account.URL}}" target="_blank">{{account.Name}}</a>
</td>
<td>{{account.Username}}</td>
<td>
<button ng-click="showPassword(account);" class="btn btn-primary" ng-hide="account.showpass">View</button>
<span ng-show="account.showpass">{{account.pass}}</span>
</td>
<td>{{account.Comments}}</td>
</tr>
</table>
</div>
</body>
相关文章:
- 使用按钮的Angular UI网格过滤器
- 带有嵌套状态的Angular ui路由器和后退按钮
- 历史向前/向后按钮不'不能使用angular 2路由器
- Angular UI网格:如何通过第一个UI网格中的按钮使第二个UI网格可见
- 使用confirm从按钮中的javascript停止angular
- Angular:如何使用ngRepeat并设置默认单选按钮选项
- Angular未更新单选按钮选择
- Angular Js 尝试从主按钮回调动态更改模态文本并且不起作用
- 如何在 Angular JS 中的按钮单击上添加类
- 在 Angular JS 中重新启用禁用 ng 的按钮
- (Angular+Bootstrap)如何阻止两个日期选择器被同一按钮打开
- 如何使Angular打开一个按钮并关闭另一个按钮
- 如果$invalid,禁用按钮angular
- 另一个按钮内的按钮不会;不能在Firefox(Angular Material)中工作
- 指定父文档按钮点击事件来自Angular JS中的子文档控制器
- 在Angular中绑定剑道网格按钮's ng click
- Angular JS中按钮的简单调整为Javascript
- 禁用fieldset ng不适用于angular js中的按钮
- Safari中Angular ng显示的按钮闪烁
- 如何关闭Angular中的表单验证,当点击按钮时,应该't发送表格