2016-07-05 53 views
0

我正在學習Angularjs並希望使用$ http.post()方法。 在HTML 在Javascript中如何在其更改值後立即發佈範圍變量?

$scope.onevariable ='value1' 
    $scope.doSomething = function(){ 
    $scope.onevariable = 'value2'; 
    $http.post('someurl',{onevariable:$scope.onevariable }).then(function(){...})} 

的問題是,我要發佈更改的$ scope.onevariable作爲參數傳遞給服務器,這個變量必須改變我單擊該按鈕後。然而,這個$ scope.onevariable可以在它更改爲'value2'之前發佈,因此如何在發生更改後準確發佈它。 'value2'對我來說是未知的值,或者是一個加密的字符串,您可以將其視爲一個隨機字符串。

+1

綁定'ng-change'事件.. 。 – Rayon

回答

1

我想$手錶將是一種選擇

$scope.$watch('onevariable', function(newValue, oldValue) { 
    $http.post('someurl',{onevariable:newValue }).then(function(){...})} 
}); 

More about $watch

2

好了,我不知道如果我明白你的問題很好,但這裏是一個片段的工作:

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

 
app.controller('mainCtrl', function($scope) { 
 
    $scope.onevariable =''; 
 
    $scope.post = false; 
 
    var increment = 0; 
 

 
    $scope.changeVar = function() { 
 
    $scope.onevariable = 'value' + ++increment; 
 
    } 
 

 
    $scope.$watch('onevariable', function(newValue, oldValue) { 
 
    if (newValue != oldValue && newValue == 'value2') { 
 
     doPost(); 
 
    } 
 
    }); 
 

 
    function doPost() { 
 
    // post 
 
    $scope.post = true; 
 
    } 
 
});
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.7/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="mainCtrl"> 
 
    <button ng-click="changeVar()">Click me</button> 
 
    <hr ng-if="onevariable" /> 
 
    <code ng-bind="onevariable"></code> 
 
    <hr /> 
 
    <code ng-bind="'Post? ' + post"></code> 
 
</body> 
 

 
</html>