2016-09-30 64 views
0

我有一個這樣的形式:伍模型更新不及時的值在控制器

<form name="UserForm" class="form-horizontal" ng-submit="setUser()" > 

    <input id="firstname" name="firstname" type="text" placeholder="add a firstname.." class="form-control input-md" ng-model="user.firstname" required> 

     <button id="Submit" name="Submit" class="btn btn-primary" ng-click="showMessage = 'false'" ng-disabled="UserForm.$invalid">Save</button> 
    </form> 

,並在我的控制器:

customModule2.controller('UserController',function ($state, $stateParams, $location, $log,$http, $scope, userFactory , appSettings) { 

$scope.user = {}; 
$scope.setUser = function() { 
    if($scope.UserForm.$valid) { 
     userFactory.addUser($scope.user) 
      .success(function (data) { 
       console.log("controller set : " + this.user.firstname); 
       $scope.addMessage = data; 
       $log.log(''); 

      }) 
      .error(function (data, status) { 
       console.log("user firstname : " + $scope.user.firstname); 
      }); 
     $scope.UserForm.$setPristine(); 
    } 
}; 
)}; 

現在,當我輸入名字我可以看到它是添加,但是當我檢查控制檯時,控制器中的值爲空。

任何幫助將是appreciated.thanks

編輯:

我有這樣的控制器,它幾乎是相同的代碼,它工作得很好:

customModule2.controller('ProjectController',function ($state, $stateParams, $location, $log,$http, $scope, projectFactory , appSettings) { 
    $scope.project = {}; 
    $scope.setProject = function() { 
    if($scope.ProjectForm.$valid) { 
     projectFactory.addProject($scope.project) 
      .success(function (data) { 
       $scope.addMessage = data; 
       console.log('here' + $scope.project.name); 
      }) 
      .error(function (data, status) { 
       $scope.addMessage = "Erreur lors de l'ajout : " + data + ' ' + status; 
       console.log('here'); 
       $log.log(data.error + '' + status); 
      }); 
     $scope.showMessage = true; 
     $scope.ProjectForm.$setPristine(); 
    } 
    }; 

難道是一個$scope問題?

+0

您正在記錄user.cin而不是user.firstname –

+0

您提供的代碼中存在語法錯誤。你確定這是你的代碼嗎? –

+0

是的,這是我的代碼,我已經更新了代碼,「這是一個片段」 –

回答

0

可能success(...)error(...)功能有不同的範圍(一個不同的$scope變量)。要解決此問題,您可以緩存該值。

customModule2.controller('UserController',function ($state, $stateParams, $location, $log,$http, $scope, userFactory , appSettings) { 

    $scope.user = {}; 
    $scope.setUser = function() { 
     var firsName = $scope.user.firstname; 
     if($scope.UserForm.$valid) { 
      userFactory.addUser($scope.user) 
       .success(function (data) { 
        console.log("controller set : " + this.user.cin); 
        $scope.addMessage = data; 
        $log.log(''); 

       }) 
       .error(function (data, status) { 
        console.log("user firstname : " firstName); 
       }); 
      $scope.UserForm.$setPristine(); 
     } 
    }; 
)}; 
+0

嗯,我有一個表單,所以我有很多數據,我需要爲所有數據做到這一點?加上我有相同的代碼在另一個控制器/形式,它工作正常... –

+0

@MoatezBouhdid是的,但這並不是通常的做法。由於您使用的是工廠,並且您將表單數據傳遞給它('$ scope.user'對象),因此您應該創建這個工廠,使其不需要訪問'成功(...)'或'錯誤(...)'功能。 – Titus

+0

謝謝你的迴應,但我不相信這是答案的原因正如我所說,我在另一個控制器/窗體中有相同的代碼,並且它工作正常(當我說相同時,我只是用用戶更改了項目變量), –

0

你必須嘗試使用​​控制檯打印您的用戶名:

console.log("controller set : ", $scope.user.firstname); 

console.log("controller set : " + $scope.user.firstname)試圖您user.firstname對象轉換爲一個字符串的串聯。

+0

感謝您的迴應,但即使使用'$ scope.user.firstname' –

相關問題