2017-04-08 3 views
0

Ich weiß, das ist eine sehr triviale Frage, aber ich bin nicht in der Lage, das Problem zu verstehen.Fabrik arbeitet nicht im Controller

myApp.factory("States", ['runajax', function(runajax) { 
    var states = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Dakota", "North Carolina", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]; 

    return states; 

}]); 

myApp.controller("TypeaheadCtrl", function($scope, States) { 

    $scope.selected = undefined; 

    $scope.states = States; 

console.log($scope.states); 

}); 

Ich überprüfe die Konsole und es zeigt undefined.

+0

wahrscheinlich etwas zu tun mit was auch immer 'runajax' ist und was es anders als das tut, was gezeigt wird – charlietfl

+0

Auch ohne diesen runjax-Dienst funktioniert es nicht. Ich bekomme immer undefiniert –

+0

Code funktioniert wie in der Antwort unten erwähnt. Erstellen Sie eine Demo, die Problem reproduziert wie in [mcve] – charlietfl

Antwort

0

Es scheint gut zu funktionieren.

DEMO

var app = angular.module('plunker', []); 
 

 
app.factory('States', function(){ 
 
    var states = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Dakota", "North Carolina", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming"]; 
 
    return states; 
 
}) 
 

 

 
app.controller("TypeaheadCtrl", function($scope, States) { 
 
    $scope.selected = undefined; 
 
    $scope.states = States; 
 
    console.log($scope.states); 
 

 
}); 
 
app.controller('SecondCtrl', function($scope, States){ 
 
    $scope.data_list_2 = States.data; 
 
});
<!DOCTYPE html> 
 
<html ng-app="plunker"> 
 

 
    <head> 
 
    <meta charset="utf-8" /> 
 
    <title>AngularJS Plunker</title> 
 
    <script>document.write('<base href="' + document.location + '" />');</script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script data-require="[email protected]" src="https://code.angularjs.org/1.2.25/angular.js" data-semver="1.2.25"></script> 
 
    <script src="app.js"></script> 
 
    </head> 
 

 
    <body> 
 
     <div ng-controller="TypeaheadCtrl"> 
 
      <p>Main Controller {{states}}</p> 
 
     </div> 
 
     
 
     <div ng-controller="SecondCtrl"> 
 
      <p>Second {{states}}</p> 
 
     </div> 
 
    </body> 
 

 
</html>

0

Das Problem war mit meiner AngularJS Version und die Injektion von Fabrik-Controller falsch war.

+0

Bitte erläutern Sie: Was war mit Ihrer angularjs-Version nicht in Ordnung? Was war falsch mit der Injektion der Fabrik? Von den Antworten wird erwartet, dass sie die Frage vollständig beantworten. Siehe Antwort]. –

Verwandte Themen