Как сделать обратную передачу ajax с директивой typeahead Angular-ui-bootstrap

Я использую Angular-UI TypeAhead в своем приложении mvc.

Вот мой источник HTML:

<div data-ng-app="v">
    <div ng-controller="TypeAheadController">
        <input type="text" id="txtType" ng-model="selected" typeahead-on-select="callBack($item,$model,$label)" typeahead="state as state.Name for state in states | filter:$viewValue | limitTo:8" class="form-control">
    </div>
</div>

Вот мой js-файл:

    var v = angular.module('v', ['ui.bootstrap']);

v.factory('serverCallMakerFactory', ['$http', serverCallMakerFactory]); 

function serverCallMakerFactory($http) {
    var serverCallMakerFactory = {};
    serverCallMakerFactory.callServer = function (url) {
        return $http.get(url);
    };
    return serverCallMakerFactory;
}

v.controller('TypeAheadController', ['$scope', 'serverCallMakerFactory', $scope,TypeAheadController]);


function TypeAheadController($scope, serverCallMakerFactory) {

    $scope.selected = undefined;
    $scope.states = [{ 'ID': 1, 'Name': 'Alabama' }, { 'ID': 1, 'Name': 'Alaska' }, { 'ID': 1, 'Name': 'Arizona' }, { 'ID': 1, 'Name': 'Arkansas' }];
    $scope.callBack = function ($item, $model, $label) {
        serverCallMakerFactory.callServer("/Customer/DisplayJsonCustomer")
        .success(function (data) {
            debugger;
        });
    };
}

то, что я хочу сделать, это сделать json-вызов с идентификатором страны, выбранной пользователем.

Я попытался использовать атрибут typeahead-on-select. но в функции callBack я не могу получить службу $http. Кто-нибудь может мне помочь?

По сути, в этом посте я собираюсь извлечь данные в качестве источника для другого шрифта, который я собираюсь использовать. Если у кого-то есть лучшее решение для этого требования, пожалуйста, предложите.


person Pratik Gaikwad    schedule 22.11.2014    source источник


Ответы (1)


Просто вызовите службу angular с вашего контроллера, который возвращает данные. Он может использовать $http или любой другой метод. В этом примере это вызов службы, которая возвращает обещание. Когда он завершится, он вызовет бит кода then(), и вы сможете делать то, что хотите.

$scope.callBack = function ($item, $model) {
        var aPromise = someService.getMoreData($item.ID);
        aPromise.then(function (data) {

            //use the data or do something else with it
            $scope.yourProperty = data;

        });

    };
person dbugger    schedule 23.11.2014