jQuery .load()等效于AngularJS

问题描述 投票:5回答:4

在jQuery中是否有一个等同于$.load()的AngularJS?我希望能够从另一个域提取(即在一个域上发布应用程序,但从一个完全独立的地址加载内容)。

jquery angularjs cross-domain
4个回答
3
投票

jQuery的使用方法并不适合Angular,你不会在那里找到相同的load(你显然可以使用jQuery而不是jqLit​​e,如果你想要的话)。

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
投票

我估计你可以用ng-include做到这一点。它有一个内置的onLoad方法,你可以调用它来使用$http或$ resource模块从远程地址获取数据。


0
投票

在jQuery中是否有一个与$ .load()等效的AngularJS?

在正常情况下,您可以在angularjs的控制器中编写一些代码而不是jQuery中的$ .load函数。

你的代码就是这样的。

angular.module('YourModule', [])
.controller('YourController', function($http){
    // You can write some code here !!
    //$http.get(...
    //$http.post(...
});

我希望能够从另一个域提取(即在一个域上发布应用程序,但从一个完全独立的地址加载内容)。

我的建议取决于您的内容是否包含HTML标记。

如果不包括HTML标记,您可以编写如上所示的代码。

如果包含HTML标签,我建议写一些自定义指令代码。


0
投票

我制作刷新指令并使用编译调用click事件,它对我有用

.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');
                }                       

            });
        }
    };
})
© www.soinside.com 2019 - 2024. All rights reserved.