我尝试使用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
答案 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;