Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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 角度子视图_Javascript_Angularjs - Fatal编程技术网

Javascript 角度子视图

Javascript 角度子视图,javascript,angularjs,Javascript,Angularjs,我在谷歌上搜索了一下这个话题,但我无法得到一个关于这个话题的明确答案,因此,如果这是一个很难回答的问题,我深表歉意。不久前我就开始学习Angular,我真的很想走上好的道路 应用程序由定义配置中路由的app.js引导。htmlindex.html有一个带有ngapp指令的主体,里面只有一个div,里面有一个ng视图 $routeProvider .when('/', { templateUrl: 'views/main.html', controller: '

我在谷歌上搜索了一下这个话题,但我无法得到一个关于这个话题的明确答案,因此,如果这是一个很难回答的问题,我深表歉意。不久前我就开始学习Angular,我真的很想走上好的道路

应用程序由定义配置中路由的
app.js
引导。html
index.html
有一个带有
ngapp
指令的主体,里面只有一个div,里面有一个
ng视图

  $routeProvider
    .when('/', {
      templateUrl: 'views/main.html',
      controller: 'MainController'
    })
    .otherwise({
      redirectTo: '/'
    });
这个
main.html
和控制器是应用程序的主要部分,非常简单

现在我想有一个标题,它要么显示登录信息,要么显示来自用户的信息。我认为这应该是另一个控制器和另一个视图,因为头部应该封装所有代码,而不是污染主视图

我该怎么办

  • 我可以删除
    ng应用程序
    并为标题和主应用程序创建两个不同的控制器,但是我不知道如何将每个视图与每个
    ng控制器
    相关联,就像
    routeProvider
    所做的那样,尽管如果我不介意将所有html内联编写,这应该是可行的。我也会失去我不想去的路线

  • 我可以在应用程序中创建一个
    ng controller=headerController
    ,但仍然可以内联代码。是否可以选择将模板与没有路由定义的控制器关联

  • 在我有更好的选择之前,我现在要做的是将所有这些逻辑添加到主控制器。我只是觉得我在构建大的积木,而不是那些我可以自己创作的小积木。假设我再做三条需要标题的路线。使用选项1)或2)我必须在这些视图中再次为标题编写html模板

    我将感谢任何关于这个问题的链接或帮助,我真的很好奇如何以模块的方式处理这个问题

    先谢谢你

    我可以删除ng应用程序并为标题和主应用程序创建两个不同的控制器,但是我不知道如何像routeProvider那样将每个视图与每个ng控制器关联,尽管如果我不介意将所有html内联编写,这应该可以用。我也会失去我不想去的路线

    您只需编写两个不同的模块,它们具有相同的
    routeConfig
    ,事情可能会正常工作。不过,我不认为这是最好的解决办法

    回答你的第二个问题:

    我可以在应用程序中创建一个
    ng controller=headerController
    ,但仍然可以内联代码。是否可以选择将模板与没有路由定义的控制器关联

    您可以使用
    ng include
    包含模板:

    
    

    此外,您可以使用
    $templateCache
    或使用来保持模板内联。

    您可以使用ng include插入模板。我个人喜欢用

    谢谢。这似乎正是我所需要的,这是一个黑客还是ng include就是为了这个目的而构建的?我很乐意接受这个正确答案(已经+1),只要我测试出来。
    ng include
    是插入部分的一种常用方法
    ng视图实际上是有限的,因为它只能绑定一次,并且通常通过使用
    ng include
    以这种方式进行处理。您还可以查看是否需要根据路由切换视图,但由于它是预测试版,您还不应该在生产代码中使用它。如果我需要更好的东西,我将采用您的方法并退回到ui路线。对于标题内的更改,我将使用angular的if指令,例如,区分登录用户和注销用户。谢谢,接受答案。