AngularJS属性在第一次调用时没有绑定

时间:2015-06-26 11:31:55

标签: javascript html angularjs

我是AngularJS的新手,我正在尝试实现一个简单的绑定。

我有像这样的html(简化):

<html ng-app>
  <div id="divController" ng-controller="myCtrl">
    <input type="button" ng-click="GetNumbers();" />
      <input type="text" value="{{numbers.Total}}" />
  </div>
</div>

和这样的控制器:

function myCtrl($scope) {

$scope.numbers = new Object();


$scope.GetNumbers = function() {

    $.ajax({
        type: "POST",
        url: "page.aspx/GetCurrentNumbers",
        data: '{name: "test"}',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: OnSuccess,
        failure: function (response) {
            alert(response.d);
        }
    });
}

function OnSuccess(response) {

    var returnValue = JSON.parse(response.d);
    alert(returnValue.Total);
    $scope.numbers = returnValue;
}
}

我第一次点击按钮没有任何反应,但是在第二次点击时输入值会更新。两次警报输出相同的值。

为什么它不会在第一次点击时绑定?

1 个答案:

答案 0 :(得分:1)

您通过直接使用jQuery函数在AngularJS的世界之外进行HTTP调用。 所以angularJS不能单独刷新它的模板,基于在jquery ajax OnSuccess回调上完成的$ scope vars更新......

只有在第二次ng-click时才会查看其$ scope变量,以查看某些内容是否已更改(摘要周期)

因此,要纠正您的问题:停止使用jquery $.ajax并使用$httpngResource的角度内部机制($ http +更多功能)。这样,angular就会知道它必须在http success / fail

上更新模板