0
カルマを使ってこれを達成するには、以下のシナリオで誰も助けてくれますか? $ stateChangeSuccessは、コールバック関数がなくても簡単です。しかし、stateChangeStartには困難があります。statechangestartのテストケース
以下のような何かをしようと $scope.$on('$stateChangeStart', function (event, toState, toParams, fromState) {
if (fromState.name.match('test.abc') && ($scope.validate())) {
event.preventDefault();
}
});
が、私はわからない、私は正しい道にいる
var fromState = {name: 'test.abc'};
var toState = {name: 'test.xyz'};
scope.$on('$stateChangeStart');
expect(scope.$on).toHaveBeenCalled();
expect(fromState.name)toBe('test.abc');
/* expect event prevent default? */
私はそれにfromStateプロパティ、toStateプロパティの引数を渡す必要がありますか? – Mithun
@Hansieあなたはコールバックしたいものを渡すことができます。上の例のように抽出すると、それは単なる正常な関数です。他のものと異なることはありません。特殊なケースでは、State.name.match( 'test.abc')の例外が例外をスローするため、これをfromStateから渡す必要があります。 – sielakos
ありがとう、最後のダムの質問には申し訳ありません。 argsは配列にできますか?私は 'イベント、toState、toParams、fromState'を渡す必要があります。どのように私はこのすべてを渡すshud?配列によってどちらか?イベントはスパイするか、 'var event = scope。$ broadcast( 'click');' plz clarrify – Mithun