gpt4 book ai didi

angularjs - 在 AngularJS 中使用 .controller 方法时无法访问 $location

转载 作者:行者123 更新时间:2023-12-03 21:05:45 25 4
gpt4 key购买 nike

我在表单上使用 ng-submit 将数据推送到 Firebase,一切都按预期工作。我想做的是同时改变观点。在提交按钮本身上,我设置了 ng-click 以使用 $location 执行函数。如果我将 changeView 函数放在 .controller 方法中,我将无法使用 $location(具体来说,它说 - “错误:'undefined' is not an object (evalating '$location.path')”)。任何帮助都是 super 骗子。

// 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>

最佳答案

你没有注入(inject) $location对象进入你的 Controller 。它列在您的函数参数中,但您忘记在所述函数之前将其添加到列表中。

myApp.controller('CtrlName', ['$scope', 'angularFireCollection','$location',
function($scope, angularFireCollection, $location) {
...
}]);

关于angularjs - 在 AngularJS 中使用 .controller 方法时无法访问 $location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18666368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com