2017-04-08 95 views
0

我知道这是非常微不足道的问题,但我无法理解问题。工厂不在控制器内

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); 

}); 

我检查控制台,它显示未定义。

+0

可能与“runajax”是什么有关,它与所显示的不同 – charlietfl

+0

即使没有runjax服务,它也不起作用。我一直未定义 –

+0

显示的代码的工作原理如下所示。按照[mcve]创建演示文稿,再现问题 – charlietfl

回答

0

它似乎工作正常。

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

的问题是与我angularjs版本和工厂的注射控制器是错误的。

+0

请详细说明:你的angularjs版本有什么问题?工厂注入有什么问题?预计答案将完全回答这个问题。见[回答]。 –