$ scope赋值在一个案例中有效但在另一个案例中有效

时间:2016-10-31 10:27:39

标签: angularjs angular-controller

第一个案例

angular.module('tss.application').controller("UserspaceController",  function($scope, $http)
{
        $http(
            {
                url     : "/dirlist",
                method  : "GET",
            }).then(function successCallback(response) 
            {
                $scope.lists = response;
            }, 
            function errorCallback(response) 
            {
                window.alert("Dir list could not be get");
            });

});

第二种情况

angular.module('tss.application').controller("UserspaceController", function ($scope, $http) 
    {
        $http.get('dirlist').success(function(data) 
        {
            $scope.lists = data;
        }); 
    });

我对Angularjs很新,所以这可能是一个愚蠢的问题。无论如何, 列表变量的赋值在第二种情况下有效,但在第一种情况下。也就是说,第二个可以访问"列表"的值。控制器内部。我不明白第一个案子有什么问题?

2 个答案:

答案 0 :(得分:1)

angular.module('tss.application').controller("UserspaceController",  function($scope, $http)
{
        $http(
            {
                url     : "/dirlist",
                method  : "GET",
            }).then(function successCallback(response) 
            {
                $scope.lists = response.data;
            }, 
            function errorCallback(response) 
            {
                window.alert("Dir list could not be get");
            });

});

把$ scope.lists = response.data;,将起作用

答案 1 :(得分:0)

试试这个:

angular.module('tss.application').controller("UserspaceController",  function($scope, $http)
{
        $http(
            {
                url     : "/dirlist",
                method  : "GET",
            }).then(function successCallback(response) 
            {
                $scope.lists = response.data;
            }, 
            function errorCallback(response) 
            {
                window.alert("Dir list could not be get");
            });

});

不推荐使用的success()方法为数据和标头传递两个单独的值,但使用.then()的promise接口只传递一个response值,该值将数据和标头作为属性。< / p>

对代码的更改只是行:

                $scope.lists = response.data;