私はAngularJS 1.5.3プロジェクトで作業していましたが、私は約束の連鎖に問題があります。
私はそのような機能を持っています。だから、配列が
[
0 => string
1 => a function that return promise
2 => a function that confirms that the previous function effects took place
]
で構成されている
私はあなたが私はここにしようとしているかを見ることができると思い
this.login = function(u,p){ var promise=$auth.login(u,p).then(...); return promise;}
this.tests = [
['Im LoginController, i let users login'],
['I have logs attr, to bind current state to view',null,function(){return !!angular.isArray(self.log)}],
['I have $auth attr, that expse the $auth service',function(){return !!(self.$auth===$auth)}],
['I can get tokens from server',null,function(){return self.login({u:1,pass:1234})},function(){return !!($auth.currentUser.id === 1 && $auth.currentUser.hasValidToken()===true)}
];
...私は視覚教材を提示するコントローラを自動テストするためのディレクティブを作成したいです - anyhow-、
私が必要とするのは、配列をループして順番に実行し、[1,2]に対してtrue/falseを返すことです。
私の最初の試みは、当然のことながら、彼らは順番に実行されないので、
<ul>
<li ng-if="$last ng-repeat="test in tests">{{test[0]}} :: {{test[1]() && test[2]()}}</li>
</ul>
ngRepeat
は、非常に悪い失敗使っAngular1テンプレートに直接でした。だから私は約束でそれらを包む必要があることを知った?
'tests'が配列の場合、配列が保証されていないオブジェクトを反復する場合、配列の順番どおりに反復します。しかし、ngリピートでは、それらはすべて同時にかなり実行されます。角度バインディングに頼るのではなく、コードですべてのことを行うようにしたい場合は、[$ q.all](https://docs.angularjs.org/api/ng/service/$q#all)をご覧ください。テストしやすくなります。 – ste2425
@ ste2425配列は配列を含み、 'string、function' $ q.allという混合値はすべて処理できますか? – Zalaboza