我有一项服务可以授权我的用户并获得令牌。我在附加到正文的主控制器上使用它(index.html)
这应该是我的应用程序中的首要任务。
在我的index.html中有2个指令(正在使用需要该令牌的服务)
angular.module('app').directive('directive1', function () {
return {
templateUrl: directive1.html,
controller: function (thingsService) {
//
}
}
});
它会抛出一个错误,因为在使用指令时尚未定义令牌。
ng-if == token
我在html指令调用(index.html)上找到了基于{{1}}的解决方案
这可以胜任,但我并不满意。有更好的解决方案吗?我已经看过手表的解决方案了。
答案 0 :(得分:0)
以下解决方案并不比ng-if
更好,但可能更清晰。我们的想法是将令牌作为参数(而不是服务)传递给指令。该指令监视令牌的变化并做出相应的反应。
以下是展示如何实施此类服务的jsfiddle:
.directive('aDirective',
function() {
return {
restrict: 'EAC',
scope: {
token: '=', // <= declare a token parameter
},
link: function($scope, element, attrs, controller) {
var controllerOptions, options;
$scope.$watch('token', function(value){
// do stuff here
});
}
};
}
)
我还建议您查看this answer,其中演示了如何在加载角度模块之前等待条件/初始化。然后,您可以先初始化令牌,然后加载模块。