jQuery .load() 的 AngularJS 等效方法

5

在AngularJS中是否有类似于jQuery的$.load()的方法?我想要从另一个域名拉取数据(即将应用程序发布在一个域名上,但从完全不同的地址加载内容)。


Angular和jQuery非常不同。我建议你阅读:https://dev59.com/YGUp5IYBdhLWcg3w3KXe - TheHippo
当你说“内容”时,你是指HTML还是JSON数据或其他什么? - Bill Bergquist
Angular使用jQLite,如果在之前加载了jQuery,它将使用jQuery,因此它们不是完全不同的东西,Angular使用jQLite的方式也不同。其中一个是MVC框架,另一个是由Angular使用(或可以使用)的JavaScript库。 - Yann Chabot
4个回答

4

jQuery的使用方法并不适用于Angular,你在那里找不到load的等价物(如果你非常需要,可以使用jQuery代替jqLite)。

Angular建议在类似的情况下使用ngInclude指令。否则,您需要编写自己的指令,并将$http请求的结果写入元素中,特别是如果您需要更多控制。

如果您想要“从特定div获取内容”,您仍然需要加载jQuery以便在响应上使用选择器,以下是load的等价物:

app.directive('load', function ($http, $compile) {
    return {
        link: function (scope, element, attrs) {
            $http.get('link.htm').success(function (response) {
                var contents = angular.element("<div>").html(response).find("#someelement");
                element.empty().append($compile(contents)(scope));
            });
        }
    }
});

0
有没有AngularJS中与jQuery的$.load()函数相当的函数?
通常情况下,您可以在AngularJS控制器中编写一些代码,而不是使用jQuery的$.load函数。
您的代码将类似于以下内容。
angular.module('YourModule', [])
.controller('YourController', function($http){
    // You can write some code here !!
    //$http.get(...
    //$http.post(...
});

我想要能够从另一个域名中获取数据(例如将应用程序发布在一个域名上,但从完全不同的地址加载内容)。
我的建议取决于您的内容是否包含HTML标记。
如果不包括HTML标记,您可以像上面那样编写代码。
如果包括HTML标记,我建议编写一些自定义指令代码。

0

我使用刷新指令并在点击事件中调用编译,这对我起作用了。

.directive('refreshConfirm', function($http,$compile) {
    return {
        restrict: 'A',
        link: function postLink(scope, element, attrs) {
            element.bind('click', function () {

                $http.get(page_url).then(successCallback, errorCallback);
                function successCallback(response){
                    //success code
                    var ty=response.data;
                    var appi=angular.element(document.querySelector('#page_content')).html($compile(ty)(scope));
                }
                function errorCallback(error){
                    //error code
                    alert('error');
                }                       

            });
        }
    };
})

0

我觉得您可以使用 ng-include 来实现。 它有一个内置的 onLoad 方法,您可以使用 $http 或 $resource 模块从远程地址调用以获取数据。


我能从页面上的特定<div>获取内容吗? - wilsonhobbs
不确定我是否理解了你的问题,但是是的,你可以将内容放入你选择的div中。只需确保在正确的<div>中使用ngInclude即可。请参见此fiddle,其中包含基本的本地HTML(你需要做的就是用你的远程调用onLoad替换它)http://jsfiddle.net/mrajcok/MfHa6/ - Cem Caglar
是的,我想从另一个页面上的 div 中提取数据,并在我的页面上显示它。 - wilsonhobbs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接