Javascript 在angularjs的url中追加Id
我们使用这种方法在AngularJS中附加一个IdJavascript 在angularjs的url中追加Id,javascript,angularjs,Javascript,Angularjs,我们使用这种方法在AngularJS中附加一个Id .when( '/fundingRequirements/:id', { templateUrl : '/views/dashboard/crowdFunding/planningFunding.html', controller : 'planningFunding' }) 然后在控制器中使用这个 $loc
.when(
'/fundingRequirements/:id',
{
templateUrl : '/views/dashboard/crowdFunding/planningFunding.html',
controller : 'planningFunding'
})
然后在控制器中使用这个
$location.path("/fundingRequirements/"+data.data)
现在出现的问题是,首先它是保存的,然后在服务器上生成Id。因此,在这个URL中,URL中没有Id,而在第二种情况下,它是编辑的,所以当时URL中需要Id。我们是否需要创建另一个URL,或者在这两种情况下都有使用相同URL的方法
注意-HTML表单、控制器、服务器站点这两种操作的所有方法都是相同的,即保存、编辑从我收集的信息中,您希望为同一url重定向两个不同的视图。您可能希望为此目的使用。它是angular路由的高级库,在angular的默认ng路由服务上提供了大量功能 您可以尝试以下方法:
$stateProvider.state('saveOrEdit', {
url:'/fundingRequirements/:id',
templateUrl: ['$stateParams', function ($stateParams) {
var id = $stateParamas.id
if (id) {
return //Template URL for edit state
} else {
return //Template URL for save state;
}
]
})
注:我不确定,但这也适用于ng路线。接下来,通过定义所有路线,您可以完美地实现这一点。事实上,与实际URL相比,Angular似乎评估了来自定义的最长路由
你可以在这里找到说明这一点的例子
.when('/Book', {
templateUrl: 'bookroot.html',
controller: 'BookController'
})
我刚刚添加了这个路由,一个任意的bookroot.html
模板和一个指向主模板顶部/Book
的链接。您将看到该链接与其他链接一样有效
总之,此示例包含以下组合参数化URL:
/Book
/Book/:bookId
/Book/:bookId/ch/:chapterId
模板URL
,但是您必须使用单独的控制器,或者使用相同的控制器来检查您在$routeParams
中使用的参数(例如,如果您的id
为空)。但是,如果要显示不同的内容,我仍然建议使用不同的视图。如果有公共内容,您可以考虑使用一个公共指令或包含一个公共模板。我们创建了一个公共模板,在这个模板中,如果调用的是Save,那么它将保存到DB中。如果用户想要编辑,则自动调用一个方法从DB获取数据并填充表单。在两种情况下使用相同的模板相同的模板、相同的控制器、不同的路由。控制器必须从未定义的id参数解释创建模式,您就完成了:)