2016-10-28 61 views
0

范围变量我试图使用Django与角JS无法看到的角度

这里控制器myHeader.js

var myHeader = angular.module('myHeader', []); 

myHeader.controller('HeaderController' , ['$scope', function($scope){ 

    $scope.PasswordReset = function(){ 
     $scope.message = "done"; 
    }; 
}]); 

的话,我已经包括此控制器在header.html中

<script type="text/javascript" src="{% static 'js/libs/angular.min.js' %}"></script> 

<!-- Angular Includes --> 

<script type="text/javascript" src="{% static 'js/controllers/myHeader.js' %}"></script> 

<body ng-app="myHeader"> 
<div id="forgotPass" ng-controller="HeaderController"> 

         <h4 class="modal-title text-center" style="font-size:18px; margin-bottom:10px; margin-top:10px;"><strong>Change Password</strong> </h4> 

         <div id="div_id_email" class="form-group required"> 
         <div class="controls "> 
         <form id="password_reset" action="{% url 'account_reset_password' %}" method="POST" novalidate ng-submit="PasswordReset()"> 
         {% csrf_token %} 
          <input class="emailinput form-control" id="id_email" name="email" type="email" placeholder="E-mail" style="margin-bottom:10px" ng-model="user.email" ng-required="true"/> 
          {{message}} 

          <div> 
          <input class='btn btn-block btn-primary pull-left' id="pass-btn" type="submit" value="SUBMIT" style="width: 63%" /> 
          <input class='btn btn-block btn-primary pull-right' style="width:34%; margin-top: 0px; background-color: #757575; border: 1px solid #616161;" value="Cancel" id="canPass"/> 
          </div> 
          <div class="error-box"> 
          <div class="err2"></div>       
          <div class="ajax-sign"><img src="/static/images/ajax1.gif" height="30px"></div> 
         </div> 
         </form> 
         </div> 
         </div> 
        </div> 
</body> 

上述header.html中文件被包括在base.html文件

{% load staticfiles %} 
{% include 'products/header.html' %} 
{% block content %} 

{% endblock %} 

With the above我无法看到提交表单时的范围变量消息值。 我该如何摆脱上述问题?

回答

0

混合常规形式和AJAX是一个常见的陷阱。我建议你阅读关于ng-submit和使用Angular表单的文档。 https://docs.angularjs.org/api/ng/directive/ngSubmit https://docs.angularjs.org/api/ng/directive/form#submitting-a-form-and-preventing-the-default-action

由于在客户端的角度应用形式的作用比传统的往返应用 不同,它是理想的 浏览器不表单提交转换成一个完整的页面重载 那将数据发送到服务器。相反,应该触发某些javascript逻辑 来处理以特定于应用程序的方式提交的表单提交。

提交表单时会导致整页重装,因此您的控制器会重新初始化并且其$ scope.message不存在。 如果您想要阻止默认表单提交操作,您应该从表单定义中删除“操作”和“方法”,然后执行AJAX调用(在ng-submit回调时)。