2016-07-05 52 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>