2013-05-12 100 views
1

在过去的两周里,我玩了angularjs,发现了很多有趣的事情,让我的生活变得轻松。在angularjs中编写控制器方法设计的最佳做法是什么?

接下来我想问一下关于controller的设计。

比方说,我都遵循的代码片段:

var feederliteModule = angular.module('FeederLiteApp', []); 

feederliteModule.controller('FeederLiteCntrl', 
['ajax_post','delay', 'maps', '$scope', '$http', '$timeout', '$q', 
    function(ajax_post,delay, maps, $scope, $http, $timeout,$q) { 


    $scope.isPaused = function() { 
    return isPaused; 
    }; 

    $scope.testGeo = function() { 
    if (isPaused) return; 
    ... 
    }; 

    $scope.resetGeo = function() { 
    .... 
    }; 

    .... 
}]); 


feederliteModule.factory('delay', ... 
... 

feederliteModule.factory('maps', ... 
... 

feederliteModule.factory('ajax_post' ... 

上面提到的例子显示了controller有3种方法(名字我随机拿了)。对我来说,这看起来有些杂乱,因为这个方法定义的概念使我的代码难以阅读。

我只有2个控制器,但每个控制器都有复杂的逻辑,它影响搜索代码中的一些东西。

也许这样的事情:

$scope.isPaused = isPaused(); 
    $scope.testGeo = testGeo(); 
    $scope.resetGeo = resetGeo(); 

    function isPaused() { 
    return isPaused; 
    } 

    function testGeo() { 
    if (isPaused) return; 
    ... 
    } 

    function resetGeo() { 
    .... 
    } 

    .... 

我错过了在angularjs的东西吗?

有人知道更好的技术来写方法吗?

谢谢

马克西姆

+0

你的功能分配范围在最后一个例子也立即执行这些功能。 ()不应该在它们的末尾。 – 2013-05-12 15:21:37

回答

0

如果你在你的控制器有很多逻辑的,这也许可以提取到一个服务,你再注入到控制器。这会使代码更易读并且更容易测试。

http://docs.angularjs.org/guide/dev_guide.services.understanding_services

+0

正如我所知道的服务/工厂,我们使用的情况下,如果你使用它们像公用事业,并呼吁在不同的地方或从不同的控制器,以防止代码重复 – 2013-05-15 17:17:49

相关问题