我有一个编辑现有页面的页面,方法是填充输入表单并为页面模板/部分创建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中),那么在配置中需要更改什么才能使其工作?
答案 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')