2017-01-18 9 views
0

新しいAngularJSです。定数を使用するとng-repeatが機能しません

私は定数からドロップダウンメニューを作る必要があります。 ここに私のコード:次に

.constant('COLORS', 
    [ 
     {red: '#ff0000'}, 
     {green: '#00ff00'}, 
     {blue: '#0000ff'} 
    ] 
).directive('colorSetter', ['COLORS', function (COLORS) { 
    return { 
     scope: { 
      user: "=" 
     }, 
     restrict: 'E', 
     // templateUrl: 'colorSetterDirective.html' 
     template: '<select name="mySelect" ng-model="colorModel">' + 
     '<option ng-repeat="(key,value) in COLORS">{{c.key}} - {{c.value}}</option>' + 
     '</select>' 
    } 

、それはドロップダウンメニューを作成しますが、何のショーがあります。空っぽです。 私はすべてを試しましたが、うまく動作しません。私もその線を使用し、まだ動作していない:

<option ng-repeat="c in COLORS">{{c}}</option> 

PIC: empty selectors

のindex.html:

.... 
<td><color-setter ng-model="colors" user="x"></color-setter></td> 

はみんなありがとう!

編集: app.js

var app = angular.module("testProject", ['ui.router', 'ngAnimate', 'ngSanitize']) 
.service('userService', function ($http) { 
    this.getUsers = function() { 
     return $http.get('users.json'); 
    }; 
}) 
.controller('testProjectCtrl',function ($scope, userService, COLORS) { 
    function GetAllUsers() { 
     var getUsersData = userService.getUsers(); 

     getUsersData.then(function (user) { 
      $scope.users = user.data; 
     }, function() { 
      alert('Error in getting user records'); 
     }); 
    } 

    function init() { 
     $scope.sortType = "username"; 
     $scope.sortReverse = false; 
     $scope.limitNumber = 10; 
     $scope.colors = COLORS; 

    } 

    $scope.setDb = function (darab) { 
     $scope.limitNumber = darab; 
    } 
    init(); 
    GetAllUsers(); 

}).constant('COLORS', 
    [ 
     {red: '#ff0000'}, 
     {green: '#00ff00'}, 
     {blue: '#0000ff'} 
    ] 
).directive('colorSetter', ['COLORS', function (COLORS) { 
    return { 
     scope: { 
      user: "=" 
     }, 
     restrict: 'E', 
     // templateUrl: 'colorSetterDirective.html' 
     template: '<select name="mySelect" ng-model="colorModel">' + 
     '<option ng-repeat="c in COLORS">{{c}}</option>' + 
     '</select>' 
    } 


}]); 
+1

あなたは 'COLORSをバインドする必要があります'コントローラレベルの' $ scope'に一定のビューレベルでアクセスします。 –

+0

Imはコードを編集しました。完全なapp.jsファイルを確認してください。ありがとうPankaj –

答えて

0

あなたは、コントローラの$スコープで

.directive('colorSetter', ['COLORS', function (COLORS) { 
    return { 
     scope: { 
      user: "=" 
     }, 
     restrict: 'E', 
     templateUrl: 'colorSetterDirective.html', 
     controller:function($scope){ 
      $scope.colors = COLORS; 
     } 
    } 
}]); 

を定数を注入する必要がありcolorSetterDirective.html:

<select name="mySelect" ng-model="colorModel"> 
    <option ng-repeat="c in colors">{{c}}</option> 
</select> 
+0

ありがとうDevSullo、今すぐ動作します。私は知らなかった、私はコントローラに色を注入する必要があります。 –

+0

) – Devsullo

関連する問題