页面编辑 - 如何从 url 参数填充范围变量?

Page Editing - How to populate scope variable from url parameter?

我有一个页面用于编辑现有页面,方法是填充输入表单并为页面 template/partial 创建一个 JSON 文件。

本质上,它包括:<input ng-model="model.page_title" />$http.post('edit_json_file.php', JSON.stringify(model))

但是,要编辑页面,我需要先加载它的(现有)JSON,这样我才能为输入表单填充这些模型。我正在用另一个输入来做到这一点:

<input ng-model="url_of_page_to_edit" />

这显然需要用户手动键入现有页面的URL(加载相应的JSON文件)进行修改。 我想改变它

最好在我要编辑的每个页面上都有一个编辑按钮。单击该按钮后,它会将我重定向到我的页面编辑器,它将加载所需的 JSON 并像往常一样填写输入。为此,我需要知道加载哪个 JSON(如果页面是 /page.html,JSON 将是 page.json)。这就是为什么我考虑 将 URL 作为参数 传递给我的页面编辑器,例如:

website.com/edit_pages?url=page_to_edit

website.com/edit_pages/page_to_edit

假设我有这些 links,检索这些 URLs 的最佳做法是什么?

我正在使用 ui.router,所以我的配置是这样的:

$stateProvider.
state("editPages", {
title: "Edit",
url: "/edit_pages",
templateUrl: "/partials/edit_pages.html",
controller: "editPagesCtrl"
})

我仍然想通过手动输入 URLs

来编辑页面

如果我需要以 /edit_pages/page_to_edit 的形式将 $stateParams 与 link 一起使用,那么我该如何处理空案例 /edit_pages/

如果我需要以 /edit_pages?url=page_to_edit/ 的形式将 URLs 作为参数传递(如 PHP),那么我需要在我的配置中更改什么才能使其工作?

获取页面Link

var url = $state.href($state.current.name, $state.params, {absolute: true})

这将给出当前页面的绝对 url。然后你可以做一个 $location("edit_pages?url="+url).

将 URL 作为查询字符串传递

为了传递查询字符串格式(PHP 格式)你会导致这样的事情:

.state('editPages', {
    url: "/edit_pages?url",
    ...
})

然后 /edit_pages?url=page_to_edit 将按预期工作。

点击按钮后使用 $state.go();

放置映射(如果需要)并根据输入的输入更改状态。

 $state.go('editPages')