angularjs $ stateParams返回一个函数(?!?)

时间:2014-05-31 05:50:18

标签: angularjs angular-ui

我有一个非常简单的AngularJs应用。

这是我的app.js文件:

angular.module('myApp', [
   'ngRoute',
   'ngResource',
   'ui.bootstrap',
   'ui.router',
   'myApp.controllers'
]).
config(['$stateProvider', function($stateProvider) {
   $stateProvider.
     state('home', {
       url: "/{Id:[0-9]}",
       templateUrl: 'html/home.html', 
       controller: 'HomeCtrl'
   });
}]);

我的controllers.js文件:

angular.module('myApp.controllers', []).
controller('HomeCtrl', ['$stateParams', function($stateParams) {

    console.log($stateParams.Id);

}]);

console.log($stateParams.Id)的返回值为undefined。虽然我期待"1"(我的Id)。

否则,如果我要求console.log($stateParams),它会返回一个函数(?!?):

function l(a){function c(a){var b=r({},a,{data:Dc(a.data,a.headers,d.transformResponse)});return 200<=a.status&&
300>a.status?b:m.reject(b)}var d={method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse},f=function(a){function b(a){var c;q(a,function(b,d){Q(b)&&(c=b(),null!=c?a[d]=c:delete a[d])})}var c=e.headers,d=r({},a.headers),f,g,c=r({},c.common,c[A(a.method)]);b(c);b(d);a:for(f in c){a=A(f);for(g in d)if(A(g)===a)continue a;d[f]=c[f]}return d}(a);r(d,a);d.headers=f;d.method=Ia(d.method);(a=Mb(d.url)?b.cookies()[d.xsrfCookieName||e.xsrfCookieName]:s)&&(f[d.xsrfHeaderName||
e.xsrfHeaderName]=a);var h=[function(a){f=a.headers;var b=Dc(a.data,Cc(f),a.transformRequest);w(a.data)&&q(f,function(a,b){"content-type"===A(b)&&delete f[b]});w(a.withCredentials)&&!w(e.withCredentials)&&(a.withCredentials=e.withCredentials);return u(a,b,f).then(c,c)},s],k=m.when(d);for(q(x,function(a){(a.request||a.requestError)&&h.unshift(a.request,a.requestError);(a.response||a.responseError)&&h.push(a.response,a.responseError)});h.length;){a=h.shift();var l=h.shift(),k=k.then(a,l)}k.success=
function(a){k.then(function(b){a(b.data,b.status,b.headers,d)});return k};k.error=function(a){k.then(null,function(b){a(b.data,b.status,b.headers,d)});return k};return k} 

虽然我期待{Id: "1"}

我做错了什么???

试着尝试通过以下方式改变我的状态:

$stateProvider.
   state('home', {
     url: "/{Id:[0-9]}",
     templateUrl: 'html/home.html', 
     controller: function($stateParams){
         console.log($stateParams);
     }
   });
}]);

它有效!它会返回{Id: "1"}但不幸的是,这不是我的选择,因为我在这里描述的是一个更大更复杂的应用程序的一小部分(所以我希望app.js和{{1} }文件)。

有任何建议吗?

0 个答案:

没有答案