2015-12-04 2 views
0

У меня есть форма, я использую angualr.js. Я привязываю входные значения к угловым переменным. После отправки формы, в функции успеха $ .ajax, я назначаю пустые значения этим переменным, но я вижу одинаковые значения в форме вместо пустых строк. Ниже мой код формы,

<form name="addForm" ng-submit="outClear()"> 
     <table> 
     <tr> 
      <td> <label>Title</label></td> 
      <td> <input type="text" id="idTitle" ng-model="Title"/> </td> 
     </tr> 
     <tr> 
      <td> <label>Description</label></td> 
      <td> <textarea id="idDescription" name="desc" ng-model="Description" ></textarea> </td> 
     </tr> 
     <td><input type="submit" class="btn btn-default" value="Add" /> </td> 
     <td></td> 
     </tr> 
     </table> 
</form> 

Ниже мой Java код сценария,

var MyApp = angular.module("MyApp", []); 
    MyApp.controller("TicketCntrl", function ($scope) { 
$scope.outClear = function() { 
    var Title = $scope.Title; 
    var Description = $scope.Description; 

    var Ticket = { 
     "Title": String(Title), 
     "Description": String(Description), 
    }; 

    $.ajax({ 
     type: "POST", 
     url: "/Home/Add", 
     data: Ticket, 
     success: function (data, status) { 
     alert('In success'); 
      $scope.clear(); 
     }, 
     error: function (status, error) { 
     } 
    }); 


}; 
$scope.clear = function() { 
    $scope.Title = ''; 
    $scope.Description = ''; 
    alert('In clear'); 
    } 
} 

Это будет функция успеха и показывать «успех» сообщение и собирается очистить() и присвоение ' 'значения в $ scope.Title и $ scope.Description, но в текстовом поле и области текста я вижу те же значения, которые я ввел.

еще одна вещь, которую я пробовал, вместо outClear(), я сразу вызываю clear() после отправки. Тогда он отлично работает (все значения формы становятся пустыми).

Пожалуйста, дайте мне знать, где я делаю неправильно.

ответ

1

Не смешивайте угловые с jQuery для управления переменными области видимости, он будет испорчен с циклом дайджеста углового. Он не будет запускать цикл дайджеста, если вы обновите переменную scope из jQuery.

Вам необходимо запустить переваривать цикл по телефону $apply() через $scope после вашего метода clear() в успехе Ajax, чтобы исправить это вопрос быстро, но в идеале я не предпочел бы пойти на такой подход.

Вместо этого используйте $http вместо $.ajax.

+0

ah Я вижу ... Но мне нужно загрузить файл с заголовком = Content-Type: x-www-form-urlencoded. Не уверен, как это сделать с помощью $ http.post() – vdj4y

+0

@ vdj4y Я не уверен в этом, но вы можете сослаться на эту ссылку http://www.encodedna.com/angularjs/tutorial/angularjs-file-upload-using -http-пост-FormData-webapi.htm –

Смежные вопросы