使用Angular $ location.path时,无法调用未定义的方法'path'

时间:2014-02-22 11:25:04

标签: angularjs angularjs-routing

我已尝试在SO上找到多个解决方案,但我显然缺少一些基本的东西,因为无论我尝试什么,我都无法在提交表单(或点击按钮)时更改粒子视图。

以下是代码:

propertyControllers.controller('HomeCtrl', ['$scope', 'SearchData', '$location', 
function($scope, SearchData, $routeParams, $location) {

    SearchData.set('postcode', $scope.postcode);
    SearchData.set('radius', $scope.radius);
    SearchData.set('minBeds', $scope.minBeds);
    SearchData.set('minPrice', $scope.minPrice);

    $scope.submit = function() {
        $location.path('/properties');
    }

}]);

home.html部分

<input type="submit" class="topcoat-button--cta" value="Search">

我的路由配置

    var propertyApp = angular.module('propertyApp', [
    'ngResource',
    'ngRoute',
    'propertyControllers'
]);

propertyApp.config(['$routeProvider',
    function($routeProvider) {
        $routeProvider.
        when('/home', {
            templateUrl: 'partials/home.html',
            controller: 'HomeCtrl'
        }).
        when('/properties', {
            templateUrl: 'partials/property-list.html',
            controller: 'PropertyListCtrl'
        }).
        when('/properties/:propertyId', {
            templateUrl: 'partials/property-detail.html',
            controller: 'PropertyDetailCtrl'
        }).
        otherwise({
            redirectTo: 'home'
        });

    }]);

有人能指出我正确的方向吗?文档似乎过于复杂,我发现的所有简单例子都是我正在做的......

1 个答案:

答案 0 :(得分:5)

字符串形式的参数与实际参数不匹配:

controller('HomeCtrl', ['$scope', 'SearchData', '$location', 
                function($scope, SearchData, $routeParams, $location)

您忘记在'$routeParams'之前在数组中添加'$location'