2013-03-19 3 views
0

Мои API ресурсы хорошо, я могу получить все из класса и заполнить что-нибудь, но для демонстрационных целей здесь являются API ресурсов, как они относятся к EngineMakes:AngularJs - контроллер API не вызывается

  // EngineMake 
      GetEngineMakes: { method: 'GET', params: { controller: 'EngineMakes' }, isArray: true }, 
      GetEngineMake: { method: 'GET', params: { controller: 'EngineMakes' } }, 
      AddEngineMake: { method: 'POST', params: { controller: 'EngineMakes' } }, 
      UpdateEngineMake: { method: 'PUT', params: { controller: 'EngineMakes' } }, 
      DeleteEngineMake: { method: 'DELETE', params: { controller: 'EngineMakes' } }, 

I имеют модальную форму, которая позволяет пользователю (1) выбрать двигатель, а затем (2) добавить новую модель двигателя. Я могу подтолкнуть модель нового двигателя к объему, но он не связан с созданием двигателя.

Вот мой код:

// in engine model controller: 

$scope.save = function(data) { 
    var engineModel = angular.copy($scope.engineModel); 
    $http.post('/api/EngineModels/', engineModel) 
     .success(function() { 
      $rootScope.addEngineModel(engineModel); 
     }) 
     .error(function(data) { 
      alert(data); 
     }); 
}; 

// in engine make controller 
$rootScope.addEngineModel = function (engineModel) { 

the problem ---> $scope.engineMake = API.GetEngineMake({ id: engineModel.FK_EngineMakeId});  

    $scope.engineMake.EngineModels = $scope.engineMake.EngineModels || []; 
    $scope.engineMake.EngineModels.push(engineModel); 
}; 
  1. Новая модель двигателя успешно добавлен в БД и помещены в рамки.

  2. в $ rootScope.addEngineModel действительно получить удар, параметр является правильным и FK_EngineMakeID правильно. **

Но мой призыв к API, очевидно, неверно, так как я никогда не ударил контроллер API чтобы найти EngineMake, который соответствует машинным моделям FK_EngineMakeID , поэтому я могу подтолкнуть новую модель двигателя к соответствующим EngineMake.EngineModels, поэтому, когда модальное закрытие и пользователь выбирает команду двигателя, вновь созданная модель двигателя является частью этой коллекции ,

Кто-нибудь видит, где я иду не так?

PS: Я был бы счастлив с простым $ http.Get, и воздерживаются ресурс API, если кто-то может показать мне, как

ответ

0

Я решил, а затем некоторые - записные части I и II, поясню:

Часть I:

$rootScope.addEngineModel = function (engineModel) { 
    var tmp = $http({ method: 'GET', url: '/api/EngineMakes/' + engineModel.FK_EngineMakeId }). 
       success(function (data, status, headers, config) { 
        $scope.engineMake = angular.copy(data); 
        $scope.engineMakes.push($scope.engineMake); 
       }). 
       error(function (data, status, headers, config) { 
        console.log('fail'); 
       }); 

    $scope.engineMake.EngineModels = $scope.engineMake.EngineModels || []; 
    $scope.engineMake.EngineModels.push(engineModel); 

Часть II

var tmp2 = function() { 
     API.UpdateEngineMake({ id: $scope.engineMake.Id }, $scope.engineMake, function (res) { 
      if (res.Id > 0) { 
       alert('success'); 
      } 
     }); 
    }; 
}; 

Часть I обновит push и EngineMake и EngineModel с выбранным EngineMake и вновь созданным EngineModel как предварительно выбранным после того, как модальный закроет с помощью submit (для добавления нового EngineModel).

Но что, если пользователь по какой-то нечетной причине повторно выбирает новый EngineMake в выборе основной формы (а не модальной), а затем повторно выбирает EngineMake, который он выбрал ранее?

Он теряет объем вновь созданной EngineModel, ЕСЛИ он не обновляет страницу. Почему? Потому что без II мне не удалось обновить отношение EngineMake к EngineModel.

Вам нужна Часть II, чтобы преодолеть эту неудачу.

Один последний штрих:

Даже с шагом II, будет 2 одинаковых EngineMakes в избранных, один будет вновь созданный EngineModel, один не будет, так что вам нужно сделать, это что-то вроде это (т. е. фильтр):

 <select id="engineMake" ng-model="engineMake" ng-options="engineMake.Name for engineMake in engineMakes | unique"> 
     <option value="" selected>Select Engine Manufacturer ..</option> 
    </select> 

Oy! Я думаю, что пора поднять!

+0

Что вы делаете неправильно? –

Смежные вопросы