【问题标题】:angular-ui-router not workingangular-ui-router 不工作
【发布时间】:2016-03-24 23:56:35
【问题描述】:

我有 index.html,我可以加载它,但 angular-ui-router 没有将它路由到正确的 templateURl(app.html 与 index.html 位于同一目录中)。我已经添加了所有必需的脚本,但是它不工作

<!DOCTYPE html>
<html ng-app ="mustReadAlgo">
    <head>
        <title>AngularJS Basic Example</title>
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <link rel="stylesheet" href="lib/css/bootstrap.min.css" />
        <link rel="stylesheet" href="lib/css/animate.min.css" />
        <script type='text/javascript' src="public/lib/moment.min.js" charset="UTF-8"></script>
        <script type='text/javascript' src="../../public/lib/lodash.min.js" charset="UTF-8"></script>
        <script type='text/javascript' src="../../public/lib/angular/angular.min.js" charset="UTF-8"></script>


        <script type='text/javascript' src="../../public/lib/angular-sanitize/angular-sanitize.min.js" charset="UTF-8"></script>
        <script type='text/javascript' src="../../public/lib/angular-ui-router/release/angular-ui-router.min.js" charset="UTF-8"></script>
        <script type='text/javascript' src="../../app.js" charset="UTF-8"></script>
        <script type='text/javascript' src="../../app/controllers/app.controller.js" charset="UTF-8"></script>





    </head>
    <body>

        <div class="container" ui-view="" ></div>


    </body>
</html> 

而我的 app.js 是

    'use-strict';

    angular.module('mustReadAlgo',['ui.router']).config($stateProvider,$urlRouterProvider){

        $urlRouterProvider.otherwise('/');

        $stateProvider.state('home',{

            url :'/',
            templateUrl : 'app.html',(is in same directory as of index.html)
            controller :'mustReadAlgoCntrller'


        });



    }).run(function(){


    });

控制器代码在 app.controller.js 中

angular.module('mustReadAlgo').controller('mustReadAlgoCntrller',function($scope)
{
    $scope.message='Hello World';
    console.log('inside controller');
});

app.html 的内容

<div class="row">
  <div class="col-xs-2">
    <button class="form-control btn btn-default"><span class="glyphicon glyphicon-thumbs-up"></span>Hello World</button>
  </div>
    <p>Hello</p>
</div>

但是ui路由不能正常加载templateUrl? 谁能帮帮我,我是 angular js 的新手。

【问题讨论】:

  • 这看起来不像是 URL。
  • 是的,但它应该可以工作,它是一个 html 代码,所以它应该显示它。即使我在那里使用任何 url,它也不起作用。如果我将模板 Url 添加为 'app.html'它与 index.html 所在的位置相同。
  • 您有任何错误吗?可能是“mustReadAlgoCntrller”中的错字?
  • 感谢您的帮助。我没有看到任何错误,我检查了没有错字。在编辑中也添加了控制器代码。
  • 为什么要同时包含angular.ui.router.js 的常规版本和最小化版本?另外,也许显示app.html的内容。

标签: javascript angularjs angular-ui-router


【解决方案1】:

尝试使用:

<div class="container">
   <ui-view></ui-view>
</div>

// 代替:

<div class="container" ui-view="" ></div>

【讨论】:

  • 在源代码中视图指令的定义处,您可以阅读限制:'ECA'。在文档中是使用抽象视图时对 的参考。
【解决方案2】:

如果您要传递直接 HTML 以用作模板,则需要使用 template:,而不是 templateUrl:Here are the docs on templates.

【讨论】:

  • 谢谢,我会试试的。对不起,我编辑了问题以使用 templateUrl。
  • 我用模板尝试过,但效果不佳。
【解决方案3】:

您需要在状态配置中为 else 定义一个状态,并在 $urlRouterProvider.otherwise 函数中使用 statename

$stateProvider
    .state("otherwise", { url : '/'})

 $urlRouterProvider.otherwise('/otherwise');

【讨论】:

    【解决方案4】:

    在控制器中注入 $state 可以解决问题。 为了更清楚-

        angular.module('mustReadAlgo', ['ui.router']).controller('mustReadAlgoCntrller',['$scope', '$state', function($scope, $state)
    {
        $scope.message='Hello World';
        console.log('inside controller');
    }]);
    

    【讨论】:

    • 这将如何帮助解决问题? OP 没有在 mustReadAlgoCntrller 控制器中使用 $state
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多