在angularjs控制器请求之后执行jquery / js

时间:2014-02-10 17:59:33

标签: javascript jquery angularjs

这是我的代码:

Inspectr.controller('Devices',function ($scope,$http) {
    $http({
        url: 'http://xxeexxx.com/app/inspectr.php',//data
        method: "POST",
        cache : true,
        data: JSON.stringify({  request:'devices', list: 'all'  }),
        headers: {  'Content-Type': 'application/json'  }
    }).then(function (data, status, headers, config) {
        $scope.cards = data.data;

        runAllMyJqueryScriptsFromHere();
    })
});

我正在通过$ routeProvider将一些JSON数据加载到我拥有的模板中。 在渲染模板并加载所有数据后,我需要一种方法来执行jQuery插件。

功能

runAllMyJqueryScriptsFromHere()

包含加载$ http后需要触发的所有jquery。

2 个答案:

答案 0 :(得分:0)

只需添加超时即可。顺便说一句,没有'onrender'浏览器事件,因此在浏览器重绘完成后无法注册您的自己。您必须使用$ timeout来超时执行函数。

Inspectr.controller('Devices',function ($scope,$http, $timeout) {
    $http({
        url: 'http://xxeexxx.com/app/inspectr.php',//data
        method: "POST",
        cache : true,
        data: JSON.stringify({  request:'devices', list: 'all'  }),
        headers: {  'Content-Type': 'application/json'  }
    }).then(function (data, status, headers, config) {
        $scope.cards = data.data;
        $timeout(function(){
           runAllMyJqueryScriptsFromHere();
        }, 0); // time here
    })
});

您还可以注册onload事件:

<div ng-view data-onload="onloadfunctionfromscope"></div>

模板加载后将评估哪些内容: http://docs.angularjs.org/api/ng。$ rootScope.Scope#$ methods_ EVAL 但你必须使用$ timeout。

答案 1 :(得分:0)

这就是它的完成方式

Inspectr.controller('Devices',function ($scope,$http) {
    $http({
        url: 'http://xxeexxx.com/app/inspectr.php',//data
        method: "POST",
        cache : true,
        data: JSON.stringify({  request:'devices', list: 'all'  }),
        headers: {  'Content-Type': 'application/json'  }
    }).then(function (data, status, headers, config) {
        $scope.$apply(function() {
           $scope.cards = data.data;
           runAllMyJqueryScriptsFromHere();
        });


    })
});