2016-05-17 5 views
0

この関数は、ng-clickを呼び出します。Angularjs:空のオブジェクトです(クリックが1回のみの場合)?

HTML

<div class="col-md-offset-10"> 
    <div class="form-group"> 
    <a class="btn btn-default" ng-click="schedule()">Add</a> 
    </div> 
</div> 

JS

$scope.scheduleid={}; 
var inc=0; 

$scope.schedule = function() 
{ 
    inc += 1; 
    console.log($scope.from); 

    console.log ($scope.dateObj); 
    if (inc == 1) 
    { 
     var schedule = {} 
     schedule._type = "Schedule"; 

     console.log($scope.dateObj); 
     var insertSchedule = BasicJSONCreator.basicEdit(); 
     insertSchedule.Calls[0].Arguments = []; 
     insertSchedule.Calls[0].Arguments[0] = schedule; 

     httpRequester.async (insertSchedule).then (function (data) { 

     console.log(data.data.ReturnValues[0].scheduleID); 
     $scope.scheduleid=data.data.ReturnValues[0] //This get response from my database 
     console.log($scope.scheduleid); // here object is get my data from database 

     }); 
    } 
    $scope.getData(); 
} 

私は$scope.scheduleidから生じる取得したいが、ここで問題です。このfunciton。 私は1回のクリックで$scope.scheduleid(空)ですが、2回以上クリックすると$scope.scheduleid(空ではなくデータを取得)。最初のクリックが空である理由は何ですか?

$scope.getData=function() 
{ 
    console.log($scope.scheduleid) 
    // Here my object is empty when have one click,but two and more click object no empty and get data 
} 

答えて

1

あなたはHTTPリクエストを行っていますが、問題はそこにあると思います。最初のクリックで機能を呼び出すと、通話が処理され、機能が継続します。

これは、関数の最後に1回クリックするとオブジェクトが空になる理由です。オブジェクトがロードされると、2回目のクリック時に、最終的にオブジェクトが受け取られます。あなたがするべきことはあなたのHTTPコールが処理する前にを終了するのを待つことです。あなたはこれを汚れた方法($ timeout)か、有用な情報を提供するべきであるthis oneのような解決策を見ることができます。

+0

私はそれがおそらく言っていると思います! –

+0

あなたの問題を解決するのを助けて欲しいと思っています:) –

+0

Perfect this $ timeout is super :) –

関連する問題