javascript - Angularjs 路由与 django 的 url

标签 javascript python django angularjs angularjs-routing

我的前端使用 AngularJS,后端使用 Django。

我在后端做的事情非常简单,所以我没有考虑使用 tastypie。

我遇到的问题是客户端/服务器路由。我彻底糊涂了。 我所做的是:

  1. 从 django 渲染 entry.html 页面,其中有 <div ng-view></div>在 body 里。 我假设在此之后路由由 angular 的 routeProvider 处理

  2. 在我的 static/js 文件夹中,我有一个文件 app.js,它为我要填写的表单定义了另一个模板的路径

但是,当我运行项目并加载应用程序的入口 url 时,我没有被重定向到表单。

所有 javascript 文件都包含在内,我在日志中没有看到任何 404。
我在这里做错了什么?

更新: app.js

App.config(['$routeProvider', function($routeProvider){
    $routeProvider
        .when('/',{templateUrl: '/templates/workflow/request_form.html',     controller:EntryCtrl})
        .otherwise({redirectTo:'/'})
}]);

entry.html

{% extends "site_base.html" %}
{% load staticfiles %}



{% block body %}
  <div class='ng-app'>
    <div class='row-fluid'>
        <ng-view></ng-view>
       </div>
   </div>

{% endblock %}

{% block extra_script %}
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> 
      <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js">    </script>
      <script src="http://code.angularjs.org/1.0.6/angular-resource.min.js"></script>
      <script src="http://code.angularjs.org/1.0.0rc10/angular-cookies-1.0.0rc10.js">    </script>
      <script src="/static/js/controller.js"></script>
      <script src="/static/js/app.js"></script>
      <script src="/static/js/bootstrap.min.js"></script>
      <script src="/static/js/bootstrap-datepicker.js"></script>
      <script src="https://maps.googleapis.com/maps/api/js?keyAIzaSyCLZKcTGUw9V0-    UcEHuZMCf6uZpNZZaVrg&sensor=false"></script>
{% endblock %}

controller.js

var App = angular.module('app', ['ngResource']);

function EntryCtrl($scope, $http, $routeParams, $location, master)
{
    $scope.form = master.form
}

最佳答案

您必须将 Controller 定义为模块的一部分。尝试以下操作:

// controller.js
angular.module('app')
       .controller('EntryCtrl', [
          '$scope',
          '$http',
          '$routeParams',
          '$location',
          'master', // this has to be angular injectable
          function($scope, $http, $routeParams, $location, master) {
              $scope.form = master.form;
          }
       ]);

并且您应该只在 app.js 中定义应用一次:

// angular.js
angular.module('app', ['ngResource'])
       .config([
         '$routeProvider',
         function($routeProvider){
             $routeProvider
                .when('/', {
                    templateUrl: '/templates/workflow/request_form.html',
                    controller: 'EntryCtrl'
                })
                .otherwise({
                    redirectTo: '/'
                });
         }
       ]);

然后确保在模板中定义 Angular 应用程序后包含此内容:

<script src=".../angular.min.js"></script>
<script src=".../app.js"></script> <!-- where app is defined -->
<script src=".../controller.js"></script> <!-- where EntryCtrl is defined -->

关于javascript - Angularjs 路由与 django 的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18895290/

相关文章:

Django 固定主键错误,需要自然键解决方案

javascript - vim 没有编辑器命令。 :SyntasticInfo

javascript - 我在使用 VueJS 将数据输出到动态生成的表时遇到问题

javascript - 需要一个 javascript/HTML 5 网络播放器,可以使用 WAV 容器中的 G.711 编解码器播放音频

c# - 将字符串从 javascript 返回到 c#

python - 如何从django数据库中获取对象?

python - 找出引发 `ImportError` 时真正出错的地方

python - 为什么不用 pickle 而不是 struct?

python - 图像出现在除 1 个 flask 页面之外的所有页面中

django - Django 中使用的 PostgreSQL View (managed=False)不能正确同步