请根据其他事件修改ng-click的功能
Change the function of an ng-click based on other events?
我有一个问题,我想做的是:
我有这个按钮,如果用户取消订阅,他可以点击按钮获得订阅。如果用户订阅了,我希望他点击按钮取消订阅。
<button class="btn btn-primary subscribe-btn" ng-click="subscribe()" >
Subscribe
</button>
我如何在angularJS中做到这一点?根据用户的状态(例如:issubscriptions =true)改变按钮的功能,它的外观和它调用的函数。
试试这个:
<button class="btn btn-primary subscribe-btn" ng-click="isSubscribed ? unsubscribe() : subscribe()" >
<span ng-show="isSubscribed">Subscribe</span><span ng-hide="isSubscribed">Unubscribe</span>
</button>
这将调用正确的函数,并显示正确的文本,这取决于isSubscribed
。
然而,一个更简洁的选择是在控制器中处理这个问题,产生如下HTML:
<button class="btn btn-primary subscribe-btn"
ng-controller="ButtonController"
ng-click="toggleSubscribe()" >
{{subscribeButton}}
</button>
根据用户是否订阅来设置按钮的文本:
app.controller('ButtonController', ['$scope', function($scope) {
$scope.subscribed = false;
$scope.subscribeButton = $scope.subscribed ? 'Unsubscribe' : 'Subscribe';
$scope.toggleSubscribe= function() {
$scope.subscribed = !$scope.subscribed; // Handle subscription...
};
}]);
现在,更好的方法是通过创建自定义元素指令来使用模板:
app.directive('subscribeButton', function() {
return {
templateUrl: 'subscribe-button.html'
};
});
for button:
<button ng-init="subscribed = true" class="btn btn-primary subscribe-btn" ng-click="changeSubscription()" >
{{button}}
</button>
在app。controller中你可以输入
$scope.changeSubscription() = function(){
if($scope.subscribed){
$scope.button = "subscribe";
$scope.subscribe = false;
unsubscribe();
}else{
$scope.button = "unsubscribe";
$scope.subscribe = true;
subscribe();
}
}
相关文章:
- Angular,表达式{{}}的结果没有插入到ng-click中
- Ng隐藏在Ng-click元素之外
- 如何在ng-click中传递php对象
- AngularJs的ng-click$事件将子元素作为目标传递
- 使用jqGrid列格式化程序函数使ng-click工作
- 在Angularjs中,我如何使用ng repeat、ng model和ng click来动态更改内容
- ng-click指令没有调用整个函数
- 在控制器中添加$location依赖项时,ng-click停止激发
- 如何在ng repeat中使用ng click
- 将我的列表 vom ng-repeat 更改为收集重复 ng-click 后,无法正常工作
- 在 ng-click 中设置$scope变量指令
- 在 Angular 指令中定义一个用于 ng-click 的函数
- 为什么我们需要 ng-click
- (angularJS)使ng-click在ng-repeat上打开一个链接
- 为什么ng-click被称为按钮被点击的次数
- NG-CLICK功能仅在第一次工作
- 如何在一个ng-click中添加许多功能
- 请根据其他事件修改ng-click的功能
- ng-click功能不像我期望的那样工作(或根本不工作)
- 指令内部模板中的Ng-click没有提供这个功能