Tôi đang sử dụng ng-submit trên biểu mẫu để đẩy dữ liệu vào Firebase, mọi thứ hoạt động như mong đợi. Những gì tôi muốn làm là thay đổi quan điểm cùng một lúc. Trên chính nút gửi, tôi có ng-click được thiết lập để thực thi một hàm bằng cách sử dụng $ location. Nếu tôi đặt hàm changeView của tôi trong một phương thức .controller, tôi không thể sử dụng $ location (cụ thể, nó nói - "Error: 'undefined' không phải là một đối tượng (đánh giá '$ location.path')"). Bất kỳ sự trợ giúp nào sẽ là siêu duper.
// 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);
}
}
Đây là mẫu của tôi:
<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>
Nhìn vào bài này hai năm sau, tôi không thể tin rằng tôi đã làm điều này. Đối với bất kỳ ai thu thập thông tin SO, đừng làm điều này. Đây là những gì hứa hẹn cho. Những gì tôi cần phải làm là bắn một chức năng điều khiển dữ liệu và sau khi hoàn thành thì thực hiện chuyển hướng thích hợp. Điều này có thể được thực hiện với $ http, $ q hoặc thậm chí là $ save của Firebase(). – Swordfish0321