向指令注入服务变量
Injecting service variable to Directives
所以我有点麻烦。我已经查看了 Injecting service to Directive 之前所有的解决方案,但我真的不知道我做错了什么。我有一个如下所示的 authServices。
app.factory('authService', ['$http', function ($http) {
var authServiceFactory = {};
var _authentication = {
isAuth: false,
userName: ""
};
var _login = function (loginData) {
_authentication.isAuth = true;
_authentication.userName = loginData.userName;
}
appFactory.login = _login;
return appFactory;
}]);
我正在通过他们建议的方法注入它。
app.directive('headerNotification', ['authService', function (authService) {
return {
templateUrl: 'app/scripts/directives/header/header-notification/header-notification.html',
restrict: 'E',
replace: true,
link: function (scope) {
scope.authService = authService;
}
}
}]);
我的 html 是
<li data-ng-hide="authentication.isAuth">
我真的觉得我做错了。任何帮助将不胜感激。
在您看来 authentication.isAuth
是什么。
我想你拼错了对象。
<li data-ng-hide="authService.isAuth">
你的范围对象是 authService
而不是 authentication
,对吧?
更新 - 将验证传递给指令
我假设您的控制器中有 auth 变量。
$scope.myAuthService = authservice;
不,您可以将此变量作为属性传递给您的指令。
<header-notification my-auth="myAuthService"> </header-notification>
这里myAuthService
是作用域变量
更改您的指令以接受此变量,
app.directive('headerNotification', function () {
return {
templateUrl: 'app/scripts/directives/header/header-notification/header-notification.html',
restrict: 'E',
scope : {
myAuth : '=' // here you specify that you need to convert your attribute variable 'my-auth' to your directive's scope variable 'myAuth'
},
replace: true,
link: function (scope, element, attr, controller) {
// here you will get your auth variable
scope.myAuth; // this contains your auth details
}
}
});
所以我有点麻烦。我已经查看了 Injecting service to Directive 之前所有的解决方案,但我真的不知道我做错了什么。我有一个如下所示的 authServices。
app.factory('authService', ['$http', function ($http) {
var authServiceFactory = {};
var _authentication = {
isAuth: false,
userName: ""
};
var _login = function (loginData) {
_authentication.isAuth = true;
_authentication.userName = loginData.userName;
}
appFactory.login = _login;
return appFactory;
}]);
我正在通过他们建议的方法注入它。
app.directive('headerNotification', ['authService', function (authService) {
return {
templateUrl: 'app/scripts/directives/header/header-notification/header-notification.html',
restrict: 'E',
replace: true,
link: function (scope) {
scope.authService = authService;
}
}
}]);
我的 html 是
<li data-ng-hide="authentication.isAuth">
我真的觉得我做错了。任何帮助将不胜感激。
在您看来 authentication.isAuth
是什么。
我想你拼错了对象。
<li data-ng-hide="authService.isAuth">
你的范围对象是 authService
而不是 authentication
,对吧?
更新 - 将验证传递给指令
我假设您的控制器中有 auth 变量。
$scope.myAuthService = authservice;
不,您可以将此变量作为属性传递给您的指令。
<header-notification my-auth="myAuthService"> </header-notification>
这里myAuthService
是作用域变量
更改您的指令以接受此变量,
app.directive('headerNotification', function () {
return {
templateUrl: 'app/scripts/directives/header/header-notification/header-notification.html',
restrict: 'E',
scope : {
myAuth : '=' // here you specify that you need to convert your attribute variable 'my-auth' to your directive's scope variable 'myAuth'
},
replace: true,
link: function (scope, element, attr, controller) {
// here you will get your auth variable
scope.myAuth; // this contains your auth details
}
}
});