フォーム上でng-submitを使用してデータをFirebaseにプッシュすると、すべて正常に動作します。私がしたいのは、同時にビューを変更することです。送信ボタン自体では、$ locationを使って関数を実行するためにng-clickが設定されています。私がchangeView関数を.controllerメソッドに配置すると、$ locationを利用できません(具体的には、「エラー: '未定義'はオブジェクトではありません($ location.path 'を評価しています)」)。どんな助けもスーパー・デュパーです。ここで
// This doesn't work and throws the error
myApp.controller('CtrlName', ['$scope', 'angularFireCollection',
function($scope, angularFireCollection, $location) {
$scope.changeView = function(view) {
$location.path(view);
}
}
]);
// This works as expected, but I'm name spacing my functions globally and I will have to change how I'm accessing my Firebase, which isn't really desired.
function CtrlName($scope, angularFireCollection, $location) {
$scope.changeView = function(view) {
$location.path(view);
}
}
は私のテンプレートです:
<form role="form" ng-submit="tactics.add(tactic)">
<div class="form-group">
<label>Select Method</label>
<select class="form-control" ng-model="tactic.type">
<option>Email</option>
<option>Display</option>
<option>SMS</option>
<option>Print</option>
</select>
</div>
<button type="submit" class="btn btn-success" ng-click="changeView('/my-tactics')">Save</button>
</form>
2年後、私は私がこれをやっていた信じることができないこの記事を見てみます。誰かが這うので、これをしないでください。これは約束のためのものです。私がしなければならなかったことは、データを操作した関数を起動して、適切なリダイレクトを完了した後に完了することでした。これは、$ http、$ q、あるいはFirebaseの$ save()でも可能です。 – Swordfish0321