这是我当前的ng-click:
ng-click="avatarMenu = !avatarMenu"
<div class="avatar"
ng-click="avatarMenu = !avatarMenu"
ng-class="{ active: avatarMenu }">
<img src="_sources/images/joe.png" title="settings" alt="user avatar" />
</div>
现在,我想创建一个$ scope函数,当您单击该元素时,它会执行其他操作,尝试了以下操作,但出现错误:
ng-click="avatarMenu = !avatarMenu, getMenuClick('clicked')"
还尝试将动画/布尔逻辑移到我的app.js内部的函数中,但未定义avatarMenu,请猜测,因为它不再位于HTML上:
$scope.avatarMenu = false;
$scope.avMenu = {};
$scope.avMenu.getMenuClick = function(the_id) {
avatarMenu = !avatarMenu
selectAddress(the_id);
};
您将如何在其中同时设置动画/布尔登录和函数?
必须在$scope
参数上声明您在Controller函数中定义的ViewModel变量(如您所做的那样),或者,如果您使用Controller As方法-作为Controller的属性,则需要声明。
因此,使用$ scope-approach:
$scope.avatarMenu = ...;
...
$scope.avatarMenu = !$scope.avatarMenu;
并在视图中:
<div ng-class="{ active: avatarMenu }">
或者,使用ControllerAs-approach:
this.avatarMenu = ...;
...
this.avatarMenu = !this.avatarMenu;
并在视图中:
<div ng-controller="MyCtrl as vm">
...
<div ng-class="{ active: vm.avatarMenu }"></div>
</div>
请记住,归根结底,Controller只是一个常规的JavaScript函数,其后没有任何“魔术”。
另外,正如另一个答案中所建议的那样,您也可以使用分号;
来分隔视图中的命令,但我会尽量减少视图中的逻辑量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句