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

时间:2017-11-08 15:03:23

标签: angularjs angular-ui-router

我有一个编辑现有页面的页面,方法是填充输入表单并为页面模板/部分创建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

假设我有这些链接,检索这些网址的最佳做法是什么?

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

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

我仍然希望通过手动输入网址来编辑网页

如果我需要$stateParams使用/edit_pages/page_to_edit形式的链接,那么如何处理空案例/edit_pages/

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

2 个答案:

答案 0 :(得分:1)

获取网页链接

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

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

将网址作为查询字符串传递

对于传递查询字符串格式(PHP格式),您会产生以下内容:

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

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

答案 1 :(得分:0)

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

放置一个映射(如果需要)并依赖于输入的输入改变状态。

 $state.go('editPages')