Javascript 在angularjs的url中追加Id

Javascript 在angularjs的url中追加Id,javascript,angularjs,Javascript,Angularjs,我们使用这种方法在AngularJS中附加一个Id .when( '/fundingRequirements/:id', { templateUrl : '/views/dashboard/crowdFunding/planningFunding.html', controller : 'planningFunding' }) 然后在控制器中使用这个 $loc

我们使用这种方法在AngularJS中附加一个Id

.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

我想要这样的东西。当('/fundingRequirements/id:id',{templateUrl:'/views/dashboard/crowdFunding/planningFunding.html',controller:'planningFunding'})您的重定向url在这种情况下是相同的。您所要做的就是提供不同的模板url。模板url也是相同的,(我们在两种情况下使用相同的表单),如果模板url是相同的,那么应该不会有任何问题。您可以在URL中获取id并将其放入控制器,然后可以基于该id呈现不同的视图。你的实际问题在问题中并不清楚。您可能想查看它,但我们仍然必须定义两个TemplateURL。在本例中,我们可以做类似于相同url的工作。我们希望您仍然可以使用相同的
模板URL
,但是您必须使用单独的控制器,或者使用相同的控制器来检查您在
$routeParams
中使用的参数(例如,如果您的
id
为空)。但是,如果要显示不同的内容,我仍然建议使用不同的视图。如果有公共内容,您可以考虑使用一个公共指令或包含一个公共模板。我们创建了一个公共模板,在这个模板中,如果调用的是Save,那么它将保存到DB中。如果用户想要编辑,则自动调用一个方法从DB获取数据并填充表单。在两种情况下使用相同的模板相同的模板、相同的控制器、不同的路由。控制器必须从未定义的id参数解释创建模式,您就完成了:)