【问题标题】:AngularJS ui router parametersAngularJS ui 路由器参数
【发布时间】:2017-03-16 01:13:31
【问题描述】:

所以我在 Ionic 中制作了一个应用程序,它包含来自在线管理站点的一些基本动态文本。 我已经设法通过 json 将这些数据输入到应用程序中,现在我想在我的应用程序中创建动态链接(或状态)。 问题是我有一些物质的清单,每种物质都包含不同的信息。所以现在我有一个这些物质的列表,当我点击一个特定的物质时,我需要它进入一个不同的状态,这将显示这个特定物质的所有信息。

这是我目前的代码:

数据库:

 substances: [
  {
    sID: 'int',
    sTITLE: 'Some title 1',
    sINFO: 'some info 1',
  },
  {
    sID: 'int',
    sTITLE: 'Some title 2',
    sINFO: 'some info 2',
  },
  .....
 ]

app.js

  .state('substances', {
            url: "/substances",
            templateUrl: "templates/substances.html",
            controller: 'SubstancesCtrl'
        })

  .state('substanceDetails', {
            url: "/substanceDetails",
            templateUrl: "templates/substanceDetails.html",
            controller: 'substanceDetailsController'
        })

controllers.js

 .controller('SubstancesCtrl', function ($scope, $stateParams, $rootScope, $http) {


    $http.get('http://someurladdress.php?type=json')
        .success(function (data) {

            $scope.substances = data;

        })
        .error(function (response) {
            $scope.message = "Error";

        });

})

substances.html

 <ul class="list">

        <li ng-repeat="sID in substances" class="item ">
            <a ui-sref="substanceDetails({sID:substances.sID})">
                {{sID.sTITLE}}
            </a>
        </li>

    </ul>

【问题讨论】:

  • 如果你不想在你的链接中指定你的参数,你可能应该使用这样的东西:.state('substanceDetails', { url: "/substanceDetails", params: { sID: null }, templateUrl: 'templates/substanceDetails.html' }) 查看以下链接了解更多信息github.com/angular-ui/ui-router/wiki/URL-Routing

标签: angularjs json dynamic ionic-framework ui-sref


【解决方案1】:

这应该适用于 app.js:

.state('substanceDetails', {
    url: "/substanceDetails/:sID", // added :sID for dynamic ID param
    // url: "/substanceDetails?sID" you could also add sID as a query string
    templateUrl: "templates/substanceDetails.html",
    controller: 'substanceDetailsController'
})

然后你在 materials.html 中的 ui-sref 会将 sID 附加到 url,你就可以在$stateParams 的控制器中访问该 ID。

在你的 ng-repeat 中你也做错了一些事情。请为您查看this example I created,它可以满足您的需求。

【讨论】:

  • 谢谢 Ethan May 的回答,但我到这里才知道......这是 $stateParams 给我带来的问题,因为我不知道如何从那里开始工作...... .
  • 您需要创建一个 SubstanceDetailsController,然后您可以在该控制器内部使用$stateParams 来查看您传递给状态的参数。查看此线程上的答案以获取有关如何使用 $stateParams 将参数传递给控制器​​的更多信息:stackoverflow.com/questions/25647454/…
  • 再次感谢您的回答,但我只是找不到我做错了什么,因为它不起作用。
  • @SandraK 我已经用一个工作示例更新了我的答案。希望有帮助!
  • Ethan 非常感谢您的帮助和耐心,我知道我已经非常接近了,但我认为我无法直接处理 id 的问题。所以,如果你能最后一次和我裸露一下,并准确指出我在这里错过了什么?我将粘贴我正在使用的原始代码)并将我的代码粘贴到新答案中。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2023-03-30
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多