2016-10-28 98 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回調時)。