2014-03-06 96 views
0

我正在尝试遵循我在Angular文档中阅读的指导原则。 我也读了this链接。 基本上我试图按照这种体系结构: http://cliffmeyers.com/blog/2013/4/21/code-organization-angularjs-javascript角度应用程序设计结构

我的问题是,从我的理解,如果我按照角种子的例子,我不得不把我所有的控制器在模块控制器,我指令在模块指令中,然后将所有这些模块注入主模块中。此外,我应该加载控制器.js,directive.js,...在index.html

如果我想使用其他技术,我可以准备服务,模型,控制器js文件与揭示模式,然后使用以下模式?

angular.module('objectTestModule',[]); 

angular.module('objectTestModule',[]).factory('objectTestService',['$http', function($http) { 
    return new objectTestService($http); 
}]); 

angular.module('objectTestModule',[]).factory('objectTestModel',['objectTestService', function(objectTestService) { 
    return new objectTestModel(objectTestService); 
}]); 

angular.module('objectTestModule',[]).controller('objectTestController',['$scope','objectTestModel', objectTestController]); 

的objectTestModel被定义为:

'use strict' 

(function(objectTestService) { 

    var name; 

    function setName(newName) { 
     name = newName; 
    } 

    function getName() { 
     return name; 
    } 

    function getObjectTestModelFromService(key) { 
     objectTestService.getNewName(key) 
    } 

    return { 
     setName :setName, 
     getName : getName, 
     getObjectTestModelFromService : getObjectTestModelFromService 
    } 
})(); 

这就是风格也是其他js文件(控制器,服务)的...

也有一些是我在想念结构体。

----编辑

那么我应该如何实现它?

'use strict' 

angular.module('objectTestModule',[]); 

angular.module('objectTestModule',[]).factory('objectTestService',['$http', function($http) { 
    return new ObjectTestService($http); 
}]); 

angular.module('objectTestModule',[]).factory('objectTestModel',['objectTestService', function(objectTestService) { 
    return new ObjectTestModel(objectTestService); 
}]); 

angular.module('objectTestModule',[]).controller('objectTestController',['$scope','objectTestModel', function($scope, objectTestModel) { 
    return new ObjectTestController($scope, objectTestModel); 
}]); 

而且控制器是这个:

function ObjectTestController($scope, objectTestModel){ 

    $scope.test = "Test String"; 

}; 

(我不包括为简洁的服务和模型,但我也跟着丹Saltmer建议

Cuase它给了我错误说“ $注入器无法解析所需的依赖关系“

+0

模块依赖'[]'应该只在定义模块定义一次。否则:'angular.module('objectTestModule')。工厂' –

回答

1

在本例中,您的objectTestModel问题是它永远无法到达任何地方您正在执行函数ins尽管如此,却无所作为您的服务的回报价值。您还正在定义(和擦拭)你的模块每一行,只有一次明确这一点,无论是链或使用一个变量来保存模块

是否有任何理由,你不想简单地将它们定义为:

myModule.service("MyService", ["$http", function(http) { 

    var name; 

    this.setName = function(newName) { 
     name = newName; 
    }; 

    this.getName = function() { 
     return name; 
    }; 

}); 

我认为你正在尝试这样做的方式是这样的,应该只是定义一个函数来引用构造函数。

function ObjectTestModel(objectTestService) { 

    var name; 

    function setName(newName) { 
     name = newName; 
    } 

    function getName() { 
     return name; 
    } 

    function getObjectTestModelFromService(key) { 
     objectTestService.getNewName(key) 
    } 

    return { 
     setName :setName, 
     getName : getName, 
     getObjectTestModelFromService : getObjectTestModelFromService 
    } 
} 

随着角度的设置,你有它。

myModule.factory('objectTestModel', ['objectTestService', function(objectTestService) { 
    return new ObjectTestModel(objectTestService); 
}]); 

拨弄工作的你是如何寻找构建这个例子: http://jsfiddle.net/SdUdf/

+0

谢谢,但它仍然不清楚..我编辑的问题 –

+0

我认为你无法找到依赖关系的剩余问题是由于你使用'angular 。模块(“”)'多次。每次执行此操作时,都会创建一个空模块。我很快就会在回应中提出一些建议。 –

+0

谢谢。我会等待这个例子。 –