Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了angularjs – 如何在ui-router中继承解析数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在这里一个棘手的情况.我的父状态和子状态都在顶级(index.html)上覆盖了同样的ui视图.所以当它从父进入到孩子的状态时,范围会被破坏(我想?)基本上,父进程存在MetricData属性中的一个解决方案,我看起来不能访问该小组,因为它不嵌套我假设.有没有办法得到该度量数据属性的子代码,而不必在小孩中再次手动调用相同的ajax调用

父状态

.state("home.metric",{
      url: "/category/:categoryId/metric/:metricId/name/:metricName",views: {

        'main@': {

          templateUrl:
            function (stateParams){
              //move this to a util function later
              var tempName = unescape(stateParams.metricName);
              tempName = tempName.replace(/\s/g,"-");

              return '../partials/slides/' + tempName + '.html';
            },resolve: {
            MetricData: ['Metricservice','$stateParams',function(Metricservice,$stateParams){
                var data = { categoryId : $stateParams.categoryId,metricId : $stateParams.metricID};
                return Metricservice.getMetricDetails(data);
              }]
          },controllerProvider: 
            function ($stateParams) {
              var tempName = unescape($stateParams.metricName);
              tempName = tempName.replace(/\s+/g,'');

              return tempName + 'Ctrl';
            }
        }
      }

    })

儿童状态

.state("home.metric.detail",{
      url: "/detailId/:detailId/detailName/:detailName",views: {

        'main@': {
          templateUrl:
            function ($stateParams){
              //move this to a util function later
              var tempName = unescape($stateParams.detailName);
              tempName = tempName.replace(/\s/g,resolve: {
            DetailData: ['Detailservice',function(Detailservice,detailId : $stateParams.detailID};
                return Detailservice.getDetails(data);
              }],// MetricData: ['Metricservice',//   function(Metricservice,$stateParams){
            //     var data = { categoryId : $stateParams.categoryId,metricId : $stateParams.metricID};
            //     return Metricservice.getMetricDetails(data);
            //   }]
          },controllerProvider: 
            function ($stateParams) {
              var tempName = unescape($stateParams.detailName);
              tempName = tempName.replace(/\s+/g,'');

              return tempName + 'Ctrl';
            }
        }

      }

    })
@H_616_9@
@H_616_9@
一,问题的答案:

是基于

What Do Child States Inherit From Parent States?

结合

Scope Inheritance by View Hierarchy Only

II.然现在应该是明确的,但我们仍然需要找到一种解决方法

我也会说,也有答案.例如.

> Angular UI Router Nested State resolve in child states
> How do I prevent reload on named view,when state changes? AngularJS UI-Router

例如.我们可以像在这个问答A:Controlling order of operations with services and controllers,见plunker

一个特殊的父母/根状态:

$stateProvider
  .state('root',{
    abstract : true,// see controller def below
    controller : 'RootCtrl',// this is template,discussed below - very important
    template: '<div ui-view></div>',// resolve used only once,but for available for all child states
    resolve: {
      user: function (authservicE) {
          return authservice.getUserDetails();
      }
    }
  })

解决的东西传递到$范围(由每个孩子继承)

.controller('RootCtrl',function($scope,user){
  $scope.user = user;
})

这被注入到我们的状态/视图层次结构之上,任何子状态都会从中获益

// any prevIoUsly root state will just use the above as a parent
.state('index',{
    url: '/',parent : 'root',

查看更多细节here,并在working example查看

@H_616_9@

大佬总结

以上是大佬教程为你收集整理的angularjs – 如何在ui-router中继承解析数据全部内容,希望文章能够帮你解决angularjs – 如何在ui-router中继承解析数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。