Как запустить xhr запрос с адресом, указанным в шаблоне

Я пытаюсь запустить запрос XHR на URL, который контроллер получает из шаблона.

Я получаю URL, как это

Угловой код:

ManageControllers.controller('ManageCtrl', ['$scope', '$http',
    function ManageCtrl($scope, $http) {
        $scope.urls = {
            edit : '',
            get : ''
        };

        $http.post($scope.urls.get).success(function(data) {
            $scope.recipe = data;
        });
    }
]);

HTML-шаблон:

<div ng-app="ManageApp">
    <div ng-controller="ManageCtrl">
        <input 
            ng-model="urls.save"
            ng-init="
                urls.save = '/save';
            "
        />
        <input
            ng-model="urls.get"
            ng-init="
                urls.get = '/get';
            "
        />
    </div>
</div>

Пока что Angular читает значение из trmplate. Но похоже, что $ http запускается до ng-init. Так что я не знаю, лучше ли запускать $ http из какой-либо функции с тайм-аутом или есть какой-то правильный, угловой способ сделать это.

1 ответ

Вы можете немного изменить свой код без использования setTimeout:

<input
    ng-model="urls.get"
    ng-init="initGet('/get')"
 />


ManageControllers.controller('ManageCtrl', ['$scope', '$http',
    function ManageCtrl($scope, $http) {
        $scope.urls = {
            edit : '',
            get : ''
        };

        $scope.initGet = function(url) {
            $scope.urls.get = url;
            $http.post($scope.urls.get).success(function(data) {
                $scope.recipe = data;
            });
        };


    }
]);
Другие вопросы по тегам