没有依赖的角度不起作用

时间:2016-10-18 05:43:35

标签: javascript angularjs

我刚开始使用角度js,我开始使用没有服务和工厂的模块的基本声明。在添加服务和工厂之前,它运行良好。现在,在添加服务和工厂之后,它就不再起作用了。

第一个不再有效的声明:

angular.module('root',[])
.controller("index",["$scope",function ($scope){
    $scope.message="My name";
    $scope.favouriteWord;
    $scope.favouriteColor;
    $scope.favouriteShape;
    $scope.value = 1;
    $scope.isBold = function() {
        return ($scope.value % 2===0);
    }

    $scope.isUnderlined = function() { 
        return ($scope.value % 5===0);
    }

    $scope.products=[
              {id: 1, name:"House Jockey"},
              {id: 2, name:"Golf club"},
              {id: 3, name:"Baseball Bat"},
              {id: 4, name:"Lacrosse stick"}];
    $scope.favsha = true;
    $scope.factor = 6;
    $scope.product = $scope.factor * 2;
}]);

工厂补充说:

angular.module('root',["services"])
.controller("index",["$scope","square",function ($scope,square){
    $scope.product=square;
}]);

服务补充:

angular.module('root',["services"])
.controller("index",["$scope","message",function ($scope,message){
       $scope.message=message;
}]);

3 个答案:

答案 0 :(得分:0)

您正在重新声明模块“root”而不是添加新模块“services”,因为您再次向依赖项添加了“服务”。您不必在新模块中重新声明“root”,因为它应该是独立且可移植的。查看模块文档: https://docs.angularjs.org/guide/module

您的'服务'模块应该声明如下:

angular.module('services'])
.controller("index",["$scope","message",function ($scope,message){
$scope.message=message;
}]);

答案 1 :(得分:0)

您缺少angular.module函数的重要部分。

该函数充当getter和setter,具体取决于提供的参数。

angular.module('module name', [...])

其中[...]是依赖项数组,是一个“setter”,因此它将创建一个模块。

现在,在创建它之后,为了获取模块并在其上添加控制器,服务等,省略了依赖项数组。

angular.module('module name')

此外,您必须在services模块之前定义root模块。

// Define 'services' module
angular.module('services', []);

// Adds factory to 'services' module
angular.module('services').factory('factoryName', function() {
    // Implement factory...
});

// Define 'root' module
angular.module('root', ['services']);

// Adds controller to 'root' module
angular.module('root').controller('controllerName', ['$scope', 'factoryName', function($scope, factoryName) {
    // Implement controller...
}]);

答案 2 :(得分:0)

angularJS中的服务或工厂不能从模块中注入

angular.module('root',["services"])

上面的错误

服务和工厂直接注入控制器

angular.module('root',[])
.controller("index",["$scope","service",function ($scope,service){

如果您的问题没有解决,请发布服务/工厂代码,可能会对问题有所了解。