我想要什么:--- 我想禁用登录页面上的几个链接,直到并且除非给出正确的密码。我可以让他们隐藏,但因为我正在学习,所以我想了解如何做到这一点。单击提交按钮将启用禁用的链接。
我做了什么:---我已经编写了代码,我认为它应该可以工作。我正在使用自定义指令和链接:绑定事件。我认为问题出在视图上(可能),可能出在 ng-controller 中。
出了什么问题:--- 所以控制器中的范围变化没有反映在指令中。因为 event.preventDefault() 没有被触发。所以最初指令作用域采用控制器中作用域的值。如果我像现在一样在控制器中设置了 $scope.linkenabled = true 的值,那么指令范围将设置为 true。但是,当我单击登录提交按钮时,尽管控制器中的 $scope.linkedenable 值由于 $scope.linkedenable = - $scope.linkedenable 而变为 false。但它没有反映在指令范围中,它仍然是 true。
这是我的代码:--- login.js
trumodule.controller("trucontrollerlogin", ['$scope', '$location', '$timeout', function ($scope, $location, $timeout) {
***$scope.linkEnabled = true;***
$scope.submit = function () {
$scope.logimg = true;
var username = $scope.username;
var password = $scope.password;
if (username == "674" && password == "Dakar") {
$scope.status = "yes";
$timeout(function () {
$scope.logimg = true;
$location.path('/KnowHow');
}, 500);
console.log($scope.linkEnabled);
***$scope.linkEnabled = !$scope.linkEnabled;***
console.log($scope.linkEnabled);
}
else {
$scope.status = "no";
$timeout(function () {
$scope.logimg = true;
}, 500);
}
}
}])
***.directive('mylink', function () {
return {
scope: {
enabled: '=mylink'
},
link: function (scope, element, attrs) {
element.bind('click', function (event) {
console.log(scope.enabled);
if (scope.enabled) {
event.preventDefault();
}
});
}
};
});***
索引.cshtml
<body ng-app="TruModule">
<td class="leftMenu width" ***ng-controller="trucontrollerlogin"***>
<a mylink = "linkEnabled" href="#!KnowHow"><img src="~/icons8-home-26 (2).png" /></a>
<a mylink = "linkEnabled" href="#!Employee"><img src="~/icons8-people-26.png" /></a>
<a mylink = "linkEnabled" href="#!Directives"><img src="~/icons8-book-shelf-26.png"/></a>
</td>
请帮我解决这个问题。提前致谢