Свойство AngularJS не связано с первым вызовом

0

Я совершенно новый для 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 ответ

1
Лучший ответ

Вы вызываете HTTP-вызов вне мира AngularJS, используя непосредственно функцию jQuery. Таким образом, angularJS не может обновить только свой шаблон, основанный на обновлениях облаков $ scope, выполненных на обратном вызове jquery ajax OnSuccess...

это только при выполнении второго ng-click, что угловой взгляд на его переменные $ scope, чтобы увидеть, что-то изменилось (цикл дайджеста)

Итак, чтобы исправить вашу проблему: прекратите использование jquery $.ajax и используйте угловые внутренние механизмы $ http или ngResource ($ http + more features). Таким образом, угловой будет знать, что он должен обновлять шаблоны при успешном/неудачном http

  • 1
    Прибил это, спасибо большое

Ещё вопросы

Сообщество Overcoder
Наверх
Меню