2014-03-06 129 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

謝謝。我會等待這個例子。 –