1

は、私は2つのfactoryの機能を持っています何もない。 factory.isSuperadministratorのconsole.logに結果がtrueの場合AngularJs空の結果

console.log(employeeFactory.isSuperadministrator()); 

コントローラはなぜこれが動作しませんか?

+0

その非同期です。あなたの帰ってきた約束はブール値ではありません。 – ste2425

+0

@ ste2425これらの 'ブール'値は、約束が返されるまで決して返されません。 'boolean'がコールバック関数から戻るためです。 –

+0

@PankajParkarはい、OPはコール元のコントローラコードで '.then'を使用していないが、サービスコールバックで期待値を返すという事実は、プロミスチェーニングがどのように機能するかに関する知識が不足していることを示しています。だから私は彼が彼のコールバックの価値ではなく約束を返すと言いました。 – ste2425

答えて

4

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); 
}); 

this answer

+0

コントローラコードを呼び出す際に '.then'が必要です。 – ste2425

+0

@ ste2425あなたは参考回答を見ることができます –

+0

私はコメントしたときにあなたの答えになかった。 – ste2425

0

に、ここで説明されているのと同じガイドラインが

をお試しください従ってください。
employeeFactory.isSuperadministrator().then(function(res){ 
console.log(res); 
});