jquery - 为什么 Angular 数据绑定(bind)不能与 jquery ajax 一起使用?

标签 jquery angularjs ajax

我正在开发 Angular 教程项目 ---- Angular-phonecat,并且已经完成了第 5 步。

出于好奇,我将原来的 Angular ajax 方法替换为 jquery ajax 方法,其余部分保持不变。 之后我发现我可以从服务器获取正确的数据,但数据绑定(bind)永远无法工作。

这是我的代码:

'use strict';

/* Controllers */

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

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', function ($scope, $http) {
    //$http.get('phones/phones.json').success(function(data) {
    //  $scope.phones = data;
    //});
    $.ajax({
        type: "GET",
        url: "phones/phones.json",
        contentType: "application/json",
        global: false,
        success: function (data) {
            $scope.phones = data;
        }
    });

    $scope.orderProp = 'age';
}]);

为什么会发生这种情况?我错过了什么重要的事情吗?

最佳答案

发生这种情况是因为 jQuery 的 ajax 函数不在 Angular 摘要周期内。要解决此问题,请使用 $scope.$apply(); 显式运行循环:

$scope.phones = data;
$scope.$apply();

另外,还有一个建议:尽量少用 jQuery(主要用于 DOM 操作),否则你将无法学习“Angular ”方式。

关于jquery - 为什么 Angular 数据绑定(bind)不能与 jquery ajax 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718686/

相关文章:

JQuery:获取不包括嵌套标签的标签内容

javascript - jquery,不能在回调函数中进行ajax调用

angularjs - UI-Router 多 View 单 Controller

javascript - 如何使用 php/laravel 使用 get 和 post 语句而不重新加载页面

javascript - 服务器端和 javascript 生成的 HTML - 如何组合?

php - 要显示此页面,Firefox 必须发送将重复之前执行的任何操作(例如搜索或订单确认)的信息

javascript - 使用 CSS 高度 : 0; 在 JS 或 jQuery 中获取元素高度

jquery - 为什么不同的浏览器以不同的方式呈现相同的 HTML?

javascript - 在 Angular JS 中显示数组

javascript - Angular.js - 无法注入(inject)外部模块