2015-10-14 26 views
-2

see also JSFIDDLE demo如何使這個簡單的AngularJS 1.0.2 ng-options示例在1.4.2+中工作?

在這個例子中,我從另一個對象內的對象數組中填充選擇選項。所選擇的值也保持這個對象內部:

function QuarterController($scope) { 
 
    $scope.MyData = { 
 
     Quarter: 2, 
 
     QuarterArray: [{ 
 
      'value': 1, 
 
      'text': 'Q1' 
 
     }, { 
 
      'value': 2, 
 
      'text': 'Q2' 
 
     }, { 
 
      'value': 3, 
 
      'text': 'Q3' 
 
     }, { 
 
      'value': 4, 
 
      'text': 'Q4' 
 
     }], 
 
    }; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script> 
 
<div ng-app> 
 
    <h2>AngularJS ng-options Demo</h2> 
 
    <p>Works in AngularJS 1.0.2 but not in 1.4.2.</p> 
 
    <div ng-controller="QuarterController"> 
 
     <select name="quarter" ng-model="MyData.Quarter" ng-options="obj.value as obj.text for obj in MyData.QuarterArray"> 
 
      <option value="">Please select...</option> 
 
     </select> 
 
     <div>Quarter Selected: {{MyData.Quarter}}</div> 
 
    </div> 
 
    <p>What must I change to make this work in the latest AngularJS 1.*?</p> 
 
</div>

如果從1.0.2改變AngularJS庫1.4.2它停止工作。我必須做什麼才能在最新的1.4。*或1.5。*版本中完成這項工作?

(感謝BruteCode這個例子的起源)禁止使用全局變量作爲默認控制器

+1

的[角不能識別全局用作控制器]可能的複製(http://stackoverflow.com/questions/29190214/angular-is-not-recognizing -global-functions-as-controllers) – m59

回答

0

AngularJS 1.3。你有兩個選擇。對於他們兩人必須在NG-應用模塊的名字添加到您的HTML文件:

<div ng-app="myApp"> 
    </div> 
  1. 無論是使用新語法

    添加到您的js的底部文件

    angular.module('myApp', []).controller('QuarterController', QuarterController); 
    

    工作小提琴:https://jsfiddle.net/hp97e5ek/8/

  2. 或啓用該功能

    angular.module('myApp', []).config($controllerProvider) { 
        $controllerProvider.allowGlobals(); 
    }); 
    

    工作撥弄:https://jsfiddle.net/hp97e5ek/9/

+0

爲什麼downvote? – RJo

相關問題