は、私は2つのfactory
の機能を持っています何もない。 factory.isSuperadministratorのconsole.logに結果がtrueの場合AngularJs空の結果
console.log(employeeFactory.isSuperadministrator());
コントローラはなぜこれが動作しませんか?
は、私は2つのfactory
の機能を持っています何もない。 factory.isSuperadministratorのconsole.logに結果がtrueの場合AngularJs空の結果
console.log(employeeFactory.isSuperadministrator());
コントローラはなぜこれが動作しませんか?
factory.getCurrEmployee
から約束を返すために逃したfactory.isSuperadministrator
の機能です。また、コードをより賢くする小さなリファクタリングも行った。
factory.isSuperadministrator = function() {
return factory.getCurrEmployee().then(function (employee) {
return employee.Role == 'Superadministrator';
});
}
しかし、上記の事はあなたの問題を解決していません、それはconsole
でのみprint
約束のオブジェクトになります。あなたの問題を解決するために、さらにあなたが
を下回るようemployeeFactory.isSuperadministrator()
によって返された約束の上にコールバックして.then
機能を配置する必要がありコントローラー
employeeFactory.isSuperadministrator().then(function(data){
console.log(res);
});
に、ここで説明されているのと同じガイドラインが
をお試しください従ってください。employeeFactory.isSuperadministrator().then(function(res){
console.log(res);
});
その非同期です。あなたの帰ってきた約束はブール値ではありません。 – ste2425
@ ste2425これらの 'ブール'値は、約束が返されるまで決して返されません。 'boolean'がコールバック関数から戻るためです。 –
@PankajParkarはい、OPはコール元のコントローラコードで '.then'を使用していないが、サービスコールバックで期待値を返すという事実は、プロミスチェーニングがどのように機能するかに関する知識が不足していることを示しています。だから私は彼が彼のコールバックの価値ではなく約束を返すと言いました。 – ste2425