Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angularjs UI路由器中为ng repeat中的项目路由到不同的URL,需要修改UI路由器中的状态_Javascript_Angularjs_Angular Ui Router_Angularjs Routing - Fatal编程技术网

Javascript 如何在angularjs UI路由器中为ng repeat中的项目路由到不同的URL,需要修改UI路由器中的状态

Javascript 如何在angularjs UI路由器中为ng repeat中的项目路由到不同的URL,需要修改UI路由器中的状态,javascript,angularjs,angular-ui-router,angularjs-routing,Javascript,Angularjs,Angular Ui Router,Angularjs Routing,我正在使用UI路由器,我的html如下所示: <body ng-controller="myCtrl"> <h1>Hello Plunker!</h1> <ul> <li ng-repeat = "guy in guys"> <a ui-sref="person">{{guy}}{{$index+1}}</a> </li> </ul> </b

我正在使用UI路由器,我的html如下所示:

<body ng-controller="myCtrl">
  <h1>Hello Plunker!</h1>
  <ul>
    <li ng-repeat = "guy in  guys">
      <a ui-sref="person">{{guy}}{{$index+1}}</a>
    </li>
  </ul>
</body>
有人能帮我解决这里需要填充的内容吗?我的目标是,单击File1应该打开file.html,单击file2应该打开file2.html

简言之,我的问题是,当单击ng repeat指令中重复的项目时,如何打开不同的文件/模板/部分,以及如何在UI路由器的状态下指定url参数

多谢


仅使用一条带有参数的管线:

.state("person", {
    url: "/person/:file",
    ....
});

然后在模板控制器中,使用$stateParams获取文件参数,使用$http加载html内容,并将结果放入ng bind html标记属性中。

仅使用一个带有参数的路由:

.state("person", {
    url: "/person/:file",
    ....
});

然后在模板控制器中,使用$stateParams获取文件参数,使用$http加载html内容,并将结果放入ng bind html标记属性中。

我创建了一个

州会是这样的:

.state('guy_route2', {
    url: "/route/{index:int}",
    templateProvider: function($templateRequest, $stateParams) {

      var index = $stateParams.index + 1;
      var templateName = 'file' + index + '.html';

      return $templateRequest(templateName);
    },
})
这将是一个机构:

<body ng-controller="myCtrl">  

  <ul>
    <li ng-repeat = "guy in guys">
      <a ui-sref="guy_route2({index: $index})">{{guy}}</a>
    </li>
  </ul>


 <h3>Target for state</h3>

 <div ui-view=""></div>
</body>
其中我们传递状态名'guy_route2',函数调用包含表示状态参数{index:$index}的对象

检查所有

templateProvider魔法详细信息可在此处找到:

扩展:

我会用收音机调整它

选中它

我创建了一个

州会是这样的:

.state('guy_route2', {
    url: "/route/{index:int}",
    templateProvider: function($templateRequest, $stateParams) {

      var index = $stateParams.index + 1;
      var templateName = 'file' + index + '.html';

      return $templateRequest(templateName);
    },
})
这将是一个机构:

<body ng-controller="myCtrl">  

  <ul>
    <li ng-repeat = "guy in guys">
      <a ui-sref="guy_route2({index: $index})">{{guy}}</a>
    </li>
  </ul>


 <h3>Target for state</h3>

 <div ui-view=""></div>
</body>
其中我们传递状态名'guy_route2',函数调用包含表示状态参数{index:$index}的对象

检查所有

templateProvider魔法详细信息可在此处找到:

扩展:

我会用收音机调整它

选中它

如中所述,我们甚至可以使用resolve

这可能是data.json

这些state def将使用该文件生成列表和详细信息。具有解析的父状态

  .state('guys', {
    url: "/route",
    templateUrl:'guys.html',
    controller:'listCtrl',
    resolve: { 
      guys: ['$http', function($http){
        return $http
            .get("data.json")
            .then(function(response){
              return response.data; 
            })
      }],
    }
  }) 
和由传递的id驱动的模板的子级:

  .state('guy', {
    parent: 'guys',
    url: "/:id",
    controller:'MyCtrl',
    templateProvider: function($templateRequest, $stateParams) {

      var index = $stateParams.id;
      var templateName = 'file' + index + '.html';

      return $templateRequest(templateName);
    },
  })
这应该说明如何使用带有resolve的UI路由器

  .state('guys', {
    url: "/route",
    templateUrl:'guys.html',
    controller:'listCtrl',
    resolve: { 
      guys: ['$http', function($http){
        return $http
            .get("data.json")
            .then(function(response){
              return response.data; 
            })
      }],
    }
  }) 
检查一下

另见

如中所述,我们可以使用“甚至解决”

这可能是data.json

这些state def将使用该文件生成列表和详细信息。具有解析的父状态

  .state('guys', {
    url: "/route",
    templateUrl:'guys.html',
    controller:'listCtrl',
    resolve: { 
      guys: ['$http', function($http){
        return $http
            .get("data.json")
            .then(function(response){
              return response.data; 
            })
      }],
    }
  }) 
和由传递的id驱动的模板的子级:

  .state('guy', {
    parent: 'guys',
    url: "/:id",
    controller:'MyCtrl',
    templateProvider: function($templateRequest, $stateParams) {

      var index = $stateParams.id;
      var templateName = 'file' + index + '.html';

      return $templateRequest(templateName);
    },
  })
这应该说明如何使用带有resolve的UI路由器

  .state('guys', {
    url: "/route",
    templateUrl:'guys.html',
    controller:'listCtrl',
    resolve: { 
      guys: ['$http', function($http){
        return $http
            .get("data.json")
            .then(function(response){
              return response.data; 
            })
      }],
    }
  }) 
检查一下

另见



如果你想观察类似的问题和解决方案@RadimKöhler你能在这里帮忙吗,我在上创建了一个演示版,当然,给我一些minutes@RadimKöhler:非常感谢,老兄,我想我解决了这个问题,但我不确定这是不是解决方法。更新我试图用更新和工作的plunker来表达这一切。。如果您希望观察类似的问题和解决方案,希望它能有所帮助@RadimKöhler你能在这里帮忙吗,我在上创建了一个演示版,当然,给我一些minutes@RadimKöhler:非常感谢,老兄,我想我解决了这个问题,但我不确定这是不是解决方法。更新我试图用更新和工作的plunker来表达这一切。。希望有帮助我认为你问了我同样的问题?然后在模板控制器中获得带有$stateParams的文件参数,用$http加载html内容,并将结果放入ng bind html标记属性。我认为你问了我同样的问题?然后在模板控制器中获得带有$stateParams的文件参数,用$http加载html内容,并将结果放在ng bind html标记属性中。谢谢你,我在这里添加了一些毫无意义的东西,我想将ui sref添加到单选按钮,而不是链接,虽然它可以工作,但收音机不会被检查,用{{guy}替换锚,希望你现在应该有答案;祝你在UI路由器上好运,但是为什么所有的3台收音机都被选中了呢?是的,我只是想尽快给你一个版本。。。这里更新了一个感谢好友,+1添加并接受。你做了什么来修复收音机被选中,全部3个最初感谢老兄,我这里有一些废话要添加,我想添加ui sref到单选按钮,而不是一个链接,虽然它可以工作,但收音机不会得到检查,用{{guy}替换锚,希望现在你应该有答案;祝你在UI路由器上好运,但是为什么所有的3台收音机都被选中了呢?是的,我只是想尽快给你一个版本。。。这里更新了一个感谢好友,+1添加并接受。你做了什么来修复被选中的收音机,所有3个最初感谢milllion buddy,但我只想要一个简单的部分来使用controller加载数据,我不想要文件1、文件2、文件3部分。单部分应该包含所有三条路线的数据;减少子状态功能不是问题。。这更像是一种奖励;那么,你有你的答案吗?这个解决方法:{}对你有用吗?只是不确定你的评论…谢谢,伙计,这真的很有帮助,但在$scope.gu中
y=$scope.guys[$stateParams.id];这家伙是什么?是ng repeat的状态还是数据?对不起,Mike,必须停在这里。我肯定不是免费的顾问;虽然唯一衡量答案是否有用的方法是投票和接受,但我能在这里补充的唯一/最后一件事是:如果我能提供更多细节,很高兴,请提出新问题。你会得到更多观众的关注。如果你得不到答案,我想我能帮你;-让我知道,分享一个链接。。。我确实想帮忙,但有一些结果;祝你好运,先生,谢谢milllion的一个朋友,但是我只想要一个简单的部分来使用controller加载数据,我不想要文件1,文件2,文件3部分。单部分应该包含所有三条路线的数据;减少子状态功能不是问题。。这更像是一种奖励;那么,你有你的答案吗?这个解决方法:{}对你有用吗?只是不确定你的评论…谢谢,伙计,这真的很有帮助,但是在$scope.guy=$scope.guys[$stateParams.id];这家伙是什么?是ng repeat的状态还是数据?对不起,Mike,必须停在这里。我肯定不是免费的顾问;虽然唯一衡量答案是否有用的方法是投票和接受,但我能在这里补充的唯一/最后一件事是:如果我能提供更多细节,很高兴,请提出新问题。你会得到更多观众的关注。如果你得不到答案,我想我能帮你;-让我知道,分享一个链接。。。我确实想帮忙,但有一些结果;祝你好运,先生