LINUX.ORG.RU

История изменений

Исправление Dantix, (текущая версия) :

Все (большинство) нестрандарные селекты берут данные из обынчого селекта, который скрывают, таким образом я не вижу ниодной причины заниматься таким извращением с apply и так далее.

У селекта есть ng-options, которым можно таки успешно пользоваться.

И вопрос в догонку, а где лучше обращаться к серверу?

В сервисе. Сервис инжектить в контроллер.

angular.module('app').service('someservice', ['$http', function($http) {
  function getData() {
    return $http.get('url').then(function(result) {
      return result.data;
    }),
    function(error) {
      //error handling
    };
  }

  return {
    getData: getData
  };

}]);

///////////////////////////////

angular.module('app').controller('controller', ['$scope', 'someservice', function($scope, someservice) {
  $scope.items = [];
  someservice.getData().then(function(data) {
    $scope.items = data;
  });
}]);

Это если совсем просто, но обычно показывать страницу до того как загрузятся данные не целесообразно, поэтому можно в роутере в resolve объекте получить все давнные и потом передать их в контроллер.

Исходная версия Dantix, :

Все (большинство) нестрандарные селекты берут данные из обынчого селекта, который скрывают, таким образом я не вижу ниодной причины заниматься таким извращением с apply и так далее.

У селекта есть ng-options, которым можно таки успешно пользоваться.

И вопрос в догонку, а где лучше обращаться к серверу?

В сервисе. Сервис инжектить в контроллер.

angular.module('app').service('someservice', ['$http', function($http) {
  function getData() {
    $http.get('url').then(function(result) {
      return result.data;
    }),
    function(error) {
      //error handling
    };
  }

  return {
    getData: getData
  };

}]);

///////////////////////////////

angular.module('app').controller('controller', ['$scope', 'someservice', function($scope, someservice) {
  $scope.items = [];
  someservice.getData().then(function(data) {
    $scope.items = data;
  });
}]);

Это если совсем просто, но обычно показывать страницу до того как загрузятся данные не целесообразно, поэтому можно в роутере в resolve объекте получить все давнные и потом передать их в контроллер.