2014-04-26 109 views
0

我廠有方法,如NG-INIT與工廠對象控制器

angular.module('mctAppServices', ['ngResource']) 
    .factory('Users', function($resource) { 
     return $resource('/MY/system/users'); 
    }) 
    .factory('Groups', function($resource) { 
     return $resource('/MY/system/users'); 
    }); 

我怎麼能初始化不同方法的控制器像

<div ng-init="myObj: Users"> 
    <div ng-controller="GenrlCtrl"> 
    ... 
    </div> 
</div> 

,然後在我的控制器工廠方法我想像這樣的東西

function GenrlCtrl($scope) { 
    //here $scope.myObj is undefined 
} 
+1

據我所知,您必須在特定範圍(控制器)下實現'ng-init'指令。從你的例子中,它停留在外面。 'ngInit的唯一適當的用法是用於別名ngRepeat的特殊屬性。除此之外,您應該使用控制器而不是ngInit來初始化作用域上的值 –

回答

1

訪問服務與ng-init無關,這很少使用。 AngularJS有dependency injection機制。在函數簽名中聲明服務名稱,然後可以訪問它。

在你的情況,控制器可以這樣寫:

function GenrlCtrl($scope, Users, Groups) { 
    $scope.factoryMethod = User.query(); 
} 

而HTML可以簡化爲:

<div ng-controller="GenrlCtrl"> 
... 
</div> 

順便說一句,這裏展示瞭如何使用$資源short video