无法将$ stateParams传递到Angular中的视图中

时间:2016-03-08 21:10:02

标签: javascript angularjs

我尝试使用ui-sref和stateParams传递值,但它不起作用。这是我的代码:

StateProvider部分:

// Test page
.state("test", {
    url: "/test/:cid",
    templateUrl: "views/test.html",
    data: {pageTitle: 'Test Page'},
    controller: "GeneralPageControllerWithId"
})

控制器部分:

angular.module('AppName').controller('GeneralPageControllerWithId', ['$rootScope', '$scope', 'settings', '$stateParams', function($rootScope, $scope, settings, stateParams) {
    $scope.$on('$viewContentLoaded', function() {   
        // initialize core components
        App.initAjax();

        var cid = stateParams.cid;

        $scope.cid = cid;

        // set default layout mode
        $rootScope.settings.layout.pageContentWhite = true;
        $rootScope.settings.layout.pageBodySolid = false;
        $rootScope.settings.layout.pageSidebarClosed = false;
    });
}]);

HTML部分:

<a ui-sref="test({ cid : 1 })">Test</a>

输出HTML:

<div ng-controller="GeneralPageControllerWithId">
Test content {{ cid }}
</div>

如图所示,输出正在打印{{ cid }},而不是按照我的想法显示1。我想通过URL传递ID变量,但由于某种原因它只是不起作用。如何在Angular中使用stateParam传递ui-sref

2 个答案:

答案 0 :(得分:1)

控制器文件的第一行缺少逗号。

angular.module('AppName').controller('GeneralPageControllerWithId',['$rootScope','$scope','settings','$stateParams' function($rootScope,$scope,settings,stateParams) {...}

应为:

angular.module('AppName').controller('GeneralPageControllerWithId',['$rootScope','$scope','settings','$stateParams', function($rootScope,$scope,settings,stateParams) {...}

请注意&#34;&#39; $ stateParams&#39;&#34;之间添加的逗号。和&#34;功能。&#34;您可能还想在&#34; stateParams&#34;之前添加美元符号($)前缀。在函数参数中保持一致性。

答案 1 :(得分:0)

控制器的第一行应为

angular.module('AppName')
.controller('GeneralPageControllerWithId', ['$rootScope', '$scope', 'settings', '$stateParams', 
function($rootScope, $scope, settings, $stateParams) {
...your stuff goes here
}]);

在第二个stateParams之前,函数和$($)之前缺少逗号(,)。

$scope.cid = $stateParams.cid;