程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了从装饰器设置视图名称-Angular Ui Router大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决从装饰器设置视图名称-Angular Ui Router?

开发过程中遇到从装饰器设置视图名称-Angular Ui Router的问题如何解决?下面主要结合日常开发的经验,给出你关于从装饰器设置视图名称-Angular Ui Router的解决方法建议,希望对你解决从装饰器设置视图名称-Angular Ui Router有所启发或帮助;

有一个工作的家伙

你快到了。让我们简化一下状态定义 (因为我们不需要嵌套的vIEw对象,我们将在以后创建它)

parentStates.forEach(function(value) {
    $stateProvIDer
      .state("main." + value.state, {
        url: value.url,
        templateUrl: value.template,
      })
  });

这将是装饰器:

  $stateProvIDer.decorator('vIEws', function(state, parent) {
    var result = {},
      vIEws = parent(statE);

    // some example when to not inject resolve
    if (state.name === "main") {
      return vIEws;
    }

    angular.forEach(vIEws, function(config, Name) {

      // the super child template
      if(config.templateUrl === 'data.HTML'){
        result['vIEwC@main'] = config;
      }
      else{
        result['vIEwB@main'] = config;
      }
    });

    return result;
  });

在这里检查

解决方法

我以这种方式定义状态:

var parentStates = [
 {state : 'home',url: '/home',template: 'home.html'},{state : 'about',url: '/about',template: 'about.html'},{state : 'contact',url: '/contact',template: 'contact.html'},{state : 'home.data',url: '',template: 'data.html'},{state : 'about.data',{state : 'contact.data',template: 'data.html'}
];

$urlRouterProvider.otherwise("/main/home");

$stateProvider
 .state("main",{ abtract: true,url:"/main",views: {
        "viewA": {
            templateUrl:"main.html"
        }
    }
});
parentStates.forEach(function(value){
    $stateProvider
    .state("main." + value.state,{
        url: value.url,views: {
            "": {
                templateUrl: value.template
            }
        },})
});

我想写一个'decorator'用于设置视图名称的基础'templateUrl' (如您在上面看到的,该视图的名称为空)

这是装饰器的代码:

$stateProvider.decorator('views',function (state,parent) {
 var result = {},views = parent(statE);

 // Don't touch the 'main state'
 if (state.name === "main") {
  return views;
 }

 angular.forEach(views,function (config,Name) {
    if(config.templateUrl=='data.html'){
        result[name] = 'viewC@main';
    }
    else{
        result[name] = 'viewB@main';
    }
 });
return result;
});

当然,这是行不通的。我有点迷路了。

大佬总结

以上是大佬教程为你收集整理的从装饰器设置视图名称-Angular Ui Router全部内容,希望文章能够帮你解决从装饰器设置视图名称-Angular Ui Router所遇到的程序开发问题。

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

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