如何删除角度中的包含模块错误?

时间:2014-10-19 00:32:12

标签: javascript angularjs angularjs-directive angularjs-ng-repeat

我在我的Pc中进行了一个简单的演示,工作正常。但是当我做小提琴时问问题 未捕获错误:[$ injector:nomod]模块' myapp'不可用!您要么错误拼写了模块名称,要么忘记加载它。如果注册模块,请确保将依赖项指定为第二个参数。

你可以告诉它为什么会发生吗?我正在获取我的电脑中的数据。实际上我的真实问题如何刷新或调用相同的webservice后,一些tome意味着1分钟后。在jquery中我们有setinterval函数。我将在这个角度实现吗?

这里是小提琴 http://jsfiddle.net/acboLcv2/1/

var app=angular.module("myapp");

app.factory('test', function($http) {

    //This whole object is returned when the Service runs. It is a singleton
    //and its properties can be accessed from any controller

    return {


        stationDashBoard: function(callback,error) {
            $http.get('http://184.106.159.143:8180/FGRailApps/jservices/rest/a/departure?crsCode=VIC').success(callback).error(error);
        }
    }
});
function departureContrl($scope,test){
    $scope.loading=true;
    test.stationDashBoard(function(data){
        console.log(data);
        $scope.data=data.data;
        $scope.loading=false;
        //alert(data);
    },function(error){
        alert('error')
    }) ;

}

由于

1 个答案:

答案 0 :(得分:0)

因此,您需要关注的网站有一些内容:

摆脱模块错误:

我认为这是固定的,但启发式我建议:

  1. 确保角度模块的声明包含已经提到的空数组。这个必要的,因此:

    angular.module(“test”,[]);

  2. 确保您在html中引用角度应用。我建议大多数应用程序的正文:

  3. CORS错误

    您正在尝试使用$ http.get(...)从其他域加载数据。这个won't work除非您做某种CORS hackery或者从同一个域获取数据。即,您必须在http://184.106.159.143:8180(在此示例中)中托管此代码。

    投票请求

    您要求每隔n秒从服务器获取数据。这很容易,你建议使用setTimeout()的方法可以工作,但需要集成到角度摘要循环中:

    我建议使用$timeout,因为它可以使用angular的渲染(这是伪代码,未经测试):

    var fetchFromServer(cb){
    
        $timeout(function(){
    
           $http.get(...).then(function(data){
            //Do something with the retrieved data
            cb(fetchFromServer); //Recurse
           });
    
        }, 15000);
    };
    
    fetchFromServer(fetchFromServer); 
    

    否则你可以像往常一样在javascript中使用setTimeout,但是不要忘记调用$ scope。$ apply()方法,如果你在摘要循环之外进行渲染,或者它将显示为如果没有效果。