所以我试图从url参数中提取一些id
。
以下是我的陈述:
$stateProvider
.state('parent', {
url: '/parent',
templateUrl: 'path/to/parent.html',
controller: 'lolController'
})
.state('parent.child', {
url: '/child-profile/:id',
templateUrl: 'path/to/child.html',
resolve: {
someId: function ($stateParams) {
// I cant print the id from here
console.log("PARAMS", $stateParams.id)
return $stateParams.id;
}
},
})
控制器
.controller('lolController',
['$scope', 'someId', function ($scope, someId) {
$scope.someId = someId;
}])
但是,每当我尝试访问网址/parent/child-profile/123abc
时,我都会收到错误Unknown provider: someId
See error here.。
我该如何解决这个问题?感谢。
修改
Jay Shukla提供的答案帮助我理解了这一点。
parameter
是undefined
因为我在实际调用子状态之前将控制器声明为父状态,其中包含来自它的url的值。这是我想出的一个简单的解决方案,有Jay Shukla的帮助。
$stateProvider
.state('parent', {
url: '/parent',
templateUrl: 'path/to/parent.html',
})
.state('parent.child', {
url: '/child-profile/:id',
templateUrl: 'path/to/child.html',
controller: 'lolController'
})
我从父状态中删除了controller
声明并将其移动到子状态。因为在我的情况下,父状态模板只包含<div ui-view></div>
。
这个想法是:
只有状态是嵌套的,但两个html是分开的,因此控制器模型不会被继承 - Jay Shukla
每个州都有自己的控制器。
请添加/修改更多内容以改善此问题。
答案 0 :(得分:3)
尝试注入.controller('lolController',
['$scope', '$stateParams', function ($scope, $stateParams) {
$scope.someId = $stateParams.id;
}])
,然后你将在该对象中获得id。
喜欢这个
url: '/child-profile/:id', // Inside stateparams you will get id as key
OR
url: '/child-profile/{id}',
OR
url: '/child-profile/:{id:int}', // Id with integer value
您还可以通过以下不同方式定义参数
<script>
function downloadpdf(){
html2canvas(document.body,
{
onrendered: function(canvas){
var imgData = canvas.toDataURL("image/jpeg");
var a = document.createElement('a');
var doc = new jsPDF('p','mm');
doc.addImage(imgData, 'JPEG', 15, 40, 180, 160);
doc.save($.now()+'.pdf');
}
});
}
</script>