Javascript ng if、ng show或自定义指令?关于最佳做法的建议
我对angular还不太熟悉,所以如果这是一个noob问题,我很抱歉。在我的小Ionic/Angular应用程序中,根据一些基本逻辑,我只需要显示3个按钮中的1个。目前,我将在控制器中执行以下操作:Javascript ng if、ng show或自定义指令?关于最佳做法的建议,javascript,angularjs,Javascript,Angularjs,我对angular还不太熟悉,所以如果这是一个noob问题,我很抱歉。在我的小Ionic/Angular应用程序中,根据一些基本逻辑,我只需要显示3个按钮中的1个。目前,我将在控制器中执行以下操作: if ($scope.book.borrowedBy == $rootScope.signedInUser.email) { $scope.mode = 'return'; } else if ($scope.book.borrowedBy) { $scope.mode = 'req
if ($scope.book.borrowedBy == $rootScope.signedInUser.email) {
$scope.mode = 'return';
} else if ($scope.book.borrowedBy) {
$scope.mode = 'request';
} else {
$scope.mode = 'borrow';
}
$scope.borrow = function() {
$scope.book.borrowedBy = $rootScope.signedInUser.email;
$scope.book.$save();
$scope.mode = 'return';
}
$scope.return = function() {
$scope.book.borrowedBy = null;
$scope.book.$save();
$scope.mode = 'borrow';
}
在我看来,这是不完全的:
<a href="mailto:{{book.borrowedBy}}" ng-show="mode === 'request'" class="button button-block button-positive">
Request book
</a>
<button ng-show="mode === 'return'" class="button button-block button-positive" ng-click="return()">
Return book
</button>
<button ng-show="mode === 'borrow'" class="button button-block button-positive" ng-click="borrow()">
Borrow book
</button>
回执
借书
虽然这样做有效,但感觉像地狱一样凌乱。根据最佳实践,这是否应该在指令中?或者如果,我应该使用ng
是否可以根据指令中的条件输出不同的模板代码(到目前为止,我只创建了非常基本的条件)
如果它应该是一个指令,有人能给我一个类似行为的例子作为起点吗
提前感谢除了您的代码之外,在使用这两个指令ng show/ng hide vs ng时,您应该记住什么?如果您希望html在DOM中还是不希望
- ng if将实际从DOM树中删除该节点,因此它不会
可供开发工具中的任何人使用
- ng show/ng hide只需使用css display:none来删除即可
从用户的可见性中删除项目
- 自定义指令为什么要重新发明轮子?如果您只是需要显示/隐藏或删除DOM节点,那么angular已经为您完成了这项工作—使用他们的现成解决方案。如果您需要真正特殊的逻辑,但这无法解决,那么您应该编写自己的指令
所以。。。这完全取决于你的处境。你必须扪心自问,我是否希望有人能够打开开发工具并取消单击display none,然后完全访问隐藏的逻辑,或者这只是一个问题。如果您在“我不想让用户访问逻辑”中对此回答“否”,那么您的选择很简单-ng If并将节点完全从DOM中删除
考虑到您的代码,这更符合您的需求——这些选择的布尔对象
控制器ex:
$scope.mode = {
return: true,
request: false,
borrow: false
}
HTML示例:
<button ng-show="mode.return" class="button button-block button-positive" ng-click="return()">
Return book
</button>
回执
我想看看ngSwitch 我想我会在部分中使用ngclass表达式。你真的可以压缩它。我写道,这有助于澄清关于ngShow/ngHide
与ngIf
的一些混淆。也许对你有帮助。