Javascript 如何从角度控制器隐藏div
我的html中有一个div,比如Javascript 如何从角度控制器隐藏div,javascript,angularjs,angularjs-directive,angularjs-scope,angular-controller,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angular Controller,我的html中有一个div,比如 <div class="row" ng-show="loginCtrl.showTouchID" > <div class="col-xs-12"> <button type="button" class="col-xs-12 btn btn-touch-id" data-ng-click="#"> TouchID Login
<div class="row" ng-show="loginCtrl.showTouchID" >
<div class="col-xs-12">
<button type="button" class="col-xs-12 btn btn-touch-id" data-ng-click="#">
TouchID Login
</button>
</div>
</div>
但是这个不行,有人能纠正我吗
在我的登录控制器下面
angular.module('heritage').controller('LoginCtrl', LoginCtrl);
LoginCtrl.$inject = ['$scope','$rootScope', '$state', '$window', 'UserService', 'ServiceHelper', '$stateParams'];
/**
* Construct the controller.
* @param $rootScope the root scope
* @param $state the state object
* @param $window the window object
* @param UserService the user service
* @returns the controller object
*/
function LoginCtrl($scope,$rootScope, $state, $window, UserService, ServiceHelper, $stateParams) {
将
$scope
传递给您的函数(如果它是外部函数)并更改那里的$scope
变量
window.plugins.touchid.isAvailable($scope
function (msg) {
navigator.notification.alert('Touch id supported: ' + msg);
$scope.showTouchID=true;
}, function (msg) {
navigator.notification.alert('Touch id not supported: ' + msg);
$scope.showTouchID=false;
});
以下是一份工作报告:
HTML:
确保此div位于ng控制器元素内。此外,请使用$scope.loginCtrl.showTouchID而不是loginCtrl.showTouchID在视图中访问此变量。也共享loginCtrl代码。现在还不清楚你是否在任何地方使用$scope。不知道我已经更新了我的问题,警报被调用了,但是div没有变化。你可以设置一个演示小提琴吗?正如你在上面提到的,只有scope的问题,我可以通过设置loginCtrl.showthouchid=false来隐藏/显示div;外部window.plugins.touchid.isAvailable方法但内部不工作如何访问window.plugins.touchid.isAvailable方法中的hideTouchId?我尝试使用$scope.loginCtrl.hideTouchId=true;如何访问window.plugins.touchid.isAvailable方法中的hideTouchId?我尝试使用$scope.loginCtrl.hideTouchId=true;但是在控制器中不工作,将其用作
$window.plugins.touchid.isAvailable
$window.plugins.touchid.isAvailable此方法工作正常请查看我的控制器我已在控制器中注入$window,并且在控制器内部也会触发警报,但$scope.loginCtrl.showthouchId=true;没有对我的DOM进行任何更改,但是如果我将loginCtrl.showthouchid放在测试工作的方法之外,那么在该方法内部似乎无法访问,我如何修复此问题您是否定义了$scope.loginCtrl={}
?
window.plugins.touchid.isAvailable($scope
function (msg) {
navigator.notification.alert('Touch id supported: ' + msg);
$scope.showTouchID=true;
}, function (msg) {
navigator.notification.alert('Touch id not supported: ' + msg);
$scope.showTouchID=false;
});
<div ng-app="app" ng-controller="dummy">
<div class="row" ng-show="loginCtrl.showTouchID">
<div class="col-xs-12">
<button type="button" class="col-xs-12 btn btn-touch-id" data-ng-click="setTouch('hello')">TouchID Login</button>
</div>
<p>{{loginCtrl.showTouchID}}</p>
</div>
</div>
var app = angular.module("app", []);
app.controller('dummy', function ($scope) {
$scope.loginCtrl = {showTouchID: true};
$scope.setTouch = function (msg) {
if ($scope.loginCtrl.showTouchID) {
alert('Touch id not supported: ' + msg);
$scope.loginCtrl.showTouchID = false;
} else {
alert('Touch id supported: ' + msg);
$scope.loginCtrl.showTouchID = true;
}
}
});