0

我正在尝试在控制器从模板获取的 URL 上运行 XHR 请求。

我得到这样的网址

角代码:

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 是否更好,或者有一些适当的、有角度的方式来做这件事。

4

1 回答 1

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


    }
]);
于 2014-04-03T08:15:33.590 回答