Инициализация массива javascript, угловой контроллер

#javascript #angularjs

#javascript #angularjs

Вопрос:

 myModule.controller('MetadataController', function () {
        this.allOrganisations = [{name:"test"}, {name:"alpha"}, {name:"beta"}];
        var arrayLength = this.allOrganisations.length;
        for (var i = 0; i < arrayLength; i  ) {
            alert(this.allOrganisations[i].name);
        }
});
  

работает, но в представлении ничего не выходит?

 <form name="form" novalidate ng-controller="MetadataController"  class="form-inline">
    <select ng-model="form.metadata.title.organisation" ng-options="organisation.name for organisation in form.AllOrganisations"></select><br>
    <ul >
      <li ng-repeat="o in form.allOrganisations">{{ o.name }}</li>
    </ul>
  

Комментарии:

1. Поместить this в строку 3?

2. @Peteyeah опечатка, отредактировал

3. Измените this на $scope и добавьте $scope к сигнатуре функции.

4. Также удалите form перед всеми организациями в вашем представлении.

Ответ №1:

Пожалуйста, смотрите здесь http://jsbin.com/wewiv/1

   myModule.controller('MetadataController', function ($scope) {
            $scope.allOrganisations = [{name:"test"}, {name:"alpha"}, {name:"beta"}];
            var arrayLength = $scope.allOrganisations.length;
            for (var i = 0; i < arrayLength; i  ) {
                alert($scope.allOrganisations[i].name);
            }
    });
  

HTML:

  <select ng-model="form.metadata.title.organisation" ng-options="organisation.name for organisation in allOrganisations"></select><br>
    <ul >
      <li ng-repeat="o in allOrganisations">{{ o.name }}</li>
    </ul>
      </div>