Angularjs 如何使用写入模板的地址运行xhr请求

Angularjs 如何使用写入模板的地址运行xhr请求,angularjs,angular-http,Angularjs,Angular Http,我正在尝试对控制器从模板获得的URL运行XHR请求 我得到这样的url 角度代码: ManageControllers.controller('ManageCtrl', ['$scope', '$http', function ManageCtrl($scope, $http) { $scope.urls = { edit : '', get : '' }; $http.post($scop

我正在尝试对控制器从模板获得的URL运行XHR请求

我得到这样的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是否更好,或者是否有合适的、有角度的方法来执行此操作。

您可以稍微更改代码,而无需设置超时:

<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;
            });
        };


    }
]);

ManageControllers.controller('ManageCtrl',['$scope','$http',
函数ManageCtrl($scope$http){
$scope.url={
编辑:“”,
获取:“”
};
$scope.initGet=函数(url){
$scope.url.get=url;
$http.post($scope.url.get).success(函数(数据){
$scope.recipe=数据;
});
};
}
]);

谢谢。这是一个很好的解决方案。Bu在ng init之后是否还有其他现成的东西可以触发$http?您可以尝试使用
$viewContentLoaded
。但最好的解决方案是根据您的需要创建一个指令,将url传递给一个指令属性,并在链接函数中调用$http。我必须做一些研究。谢谢指路。