2017-02-24 5 views
0

Ich bin sehr neu zu AnjularJs, also ertragen Sie mit mir. In meinem aktuellen Code verwenden verschiedene Controller die gleichen Methoden. Methoden wurden bei jedem Controller eingefügt, was keine gute Praxis ist. Aber jetzt möchte ich diese Methoden zwischen verschiedenen Controller als CommonUtility.js teilen. Um dies zu tun, muss ich Service oder Fabrik so viel machen, dass ich online geschaut habe. Aber nicht sicher wie? Siehe unten Code, wenn Sie mir sagen können, was ich hier tun soll. Dateiname: Controller.jsAnrufdienst von der Steuerung in AngularJS

(function(){ 
    var somecontrollers = angular.module('angular'); 
    somecontrollers.controller('NameofController', function ($scope, $http) { 
    //code 
    .. 
    .. 
    .. 
    }); 
})(); 

Dateiname: CommonUtilities.js

var CommonUtilities = angular.module('CommonUtilities', []) 
    .service('Collapse', function() { 
    this.CollapseTree = function() { 
     var name 
     return name 
    } 
    method2 
    method3 
    ... 
    }); 

Wie füge ich Bezug auf commonUtilities.js oder seine Methoden in Controller.js? Jede Hilfe wird geschätzt. Auch noch eine Frage. Wie verwende ich $ scope in der CollapseTree-Funktion? Danke.

Antwort

1

schreiben es so, so ist es ganz klar:

(function(){ 
    'use strict'; 

    var somecontrollers = angular.module('angular', ['CommonUtilities']); 
    somecontrollers.controller('NameofController', NameofController); 

    NameofController.$inject = ['$scope', '$http', 'Collapse']; 

    function NameofController($scope, $http, Collapse) { 
    Collapse.CollapseTree(); 
    }); 
}(); 

Sie es einfach Referenz mit dem Namen Sie es früher gab. Stellen Sie außerdem sicher, dass das Modul enthalten ist, das Ihren Dienst enthält.

Sie können $scope nicht in einem Dienst verwenden. $scope ist ausschließlich für Controller gedacht, um Methoden und Variablen in einer Ansicht zu referenzieren.

+0

Problem ist gelöst. Schätzen Sie Ihre Antwort. –

Verwandte Themen