非常にモジュール化されたプロジェクトに取り組んでいますが、現在をビルドしています。ユーザlogin/logout
に基づいてtemplateUrl
を変更します。AngularJS - ディレクティブのTemplateUrlで約束を使用するファクトリメソッドの解決済みの値
Factory's Function
をtemplateUrl
に実行しようとしています。その特定の関数はJWT Factory
から別のメソッドを呼び出し、ユーザーがログに記録されている場合はtrue
、そうでない場合はfalse
を返します。
templateUrl
私はtrue
を受け取っていますが、url
を選択します。false
もう1つです。
[$http:badreq] Http request configuration url must be a string. Received: {}
すべて$log.log()
プリント正しい結果:
はしかし、悲しいことに、私は次のエラーを受け取ります。
それは表示されませんもちろん、またpage1
もpage2
指令
(function() {
'use strict';
angular
.module('myApp')
.directive('myDirective', ['SessionCheckerFactory', function (SessionCheckerFactory) {
return {
restrict: 'E',
templateUrl : function(){
return SessionCheckerService.checkSession().then(function (res) {
console.log(res);//true
return res ? 'app/page1.html' : 'app/page2.html';
});
},
controller : 'MyController',
controllerAs : 'myCtrl',
bindToController : true
};
}]);
})();
SessionCheckerFactory
(function() {
'use strict';
angular
.module('myApp')
.factory('SessionCheckerFactory', function (AuthTokenFactory) {
function checkSession() {
return AuthTokenFactory.isAuth();
}
return {
checkSession: checkSession
}
});
})();
AuthTokenFactory
(function() {
'use strict';
angular.module('myApp')
.factory('AuthTokenFactory', function AuthTokenFactory(store, $cookies) {
//Takes user's info from LocalStorage, if not empty returns a String with encoded string informations
function getToken() {
if (store.get(key)) {
return store.get(key);
}
//Takes user's info from cookie
var token = $cookies.get('token', {path: '/'});
store.set(key, token);
return token;
}
//If getToken is empty returns false, else true
function isAuth() {
return Promise.resolve(Boolean(getToken()));
}
return {
isAuth : isAuth,
getToken : getToken
}
});
})();
私は、この問題は通常、$http
リクエストによって生成されていることを周りに読んで、それは私の場合ではありません。これまでのところ私はそれに対する解決策を見つけられませんでした。
どうすればこの問題を解決できますか?
ありがとうございます。
私はそれがあなたの問題に関係しているとは思わないが、あなたは[プロミス]コンストラクタの反パターンを避けるべきである[http://stackoverflow.com/q/23803743/1048572]! – Bergi
'getToken'とは何ですか? – Bergi
これらのIIFEはかなり役に立たなく見えます。 – Bergi