javascript - 使用状态参数在 Controller 中注入(inject)数据的更好方法。我不希望 url 更新我传递的内容

标签 javascript json angularjs angular-ui-router state

我正在使用 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",
  })

最佳答案

a working plunker

如果我正确理解您的问题:

... 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/

相关文章:

javascript - FullCalendar - 内联可滚动日历

javascript - 单击另一个视频时停止视频

javascript - 带有异步请求的 NodeJS

json - 如何为一个类设置多个自定义 JSON 编码器

Swift4 的 JSON 解码器

javascript - AngularJS 未知提供程序错误(Firebase 和 AngularFire)

javascript - angularjs ng-repeat 不处理换行符

javascript - 如何在后台进行ajax请求和html元素更新?

javascript - 如何处理条件组件内的 onClick 事件

javascript - 如何在 Angular 指令中替换已弃用的替换属性