我正在使用 ui routers stateparams,我需要更新 View 。如果我将任何字段与 url 一起传递,我可以更新 View ,但由于我的 json 条目可以有多个键值对,将每个键添加到 stateProvider 的 url 的想法不是一个聪明的想法。所以我的问题是如何通过仅传递 JSON 字段之一来更新 View 。
我放了一个 plnkr 演示,如果你看到 url,我不想附加 url 中的所有文本,因为它看起来很尴尬。请告诉我解决这个问题的方法是什么。显然我无法向 JSON 添加唯一 ID 并将其作为状态访问
http://plnkr.co/edit/1ItQLvu3O1gjROXR39QN?p=preview
.state('guy', {
parent: 'guys',
url: "/:id/:desc",
controller:'MyCtrl',
templateUrl: "file1.html",
})
最佳答案
如果我正确理解您的问题:
... need to pass parameters to state, but not via url...
我们可以通过状态设置来解决:params : {}
。
这可能是我们新的 'guy2'
状态定义
.state('guy2', {
parent: 'guys',
url: "/:urlParam",
params: {
urlParam: null,
param1: null,
param2: null,
param3: null,
},
controller:'MyCtrl',
templateUrl: "guy.html",
})
urlParam 将成为 url 的一部分,而其他则不会。我们可以这样调用它:
<a ui-sref="guy2({
urlParam: guy.name,
param1: guy.desc,
param2: guy.note,
param3: guy.info,
})">{{guy.name}}</a>
对于 data.json
是这样的:
[
{
"name":"Jane",
"desc":"Jane descrition ...",
"info":"Jane Info ...",
"note":"Jane Note ..."
},
...
]
我们会看到这样的链接:
#/route/Jane
检查 action here
很少有指向更多详细信息的链接:
关于javascript - 使用状态参数在 Controller 中注入(inject)数据的更好方法。我不希望 url 更新我传递的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107564/