javascript - 在 angularjs 中获取 json 响应对象的最佳实践

标签 javascript angularjs json

我有一个返回 json 数组对象的 API,现在,我像这样在我的 Controller 中获取 json,它工作得很好:

angular.module('lyricsApp', [])
.controller('LyricsController', ['$scope', 'ApiCall', function ($scope, ApiCall) {
    $scope.lyrics = {
        id: "",
        songName: "",
        singerName: "",
        writtenBy: "",
        lyricText: "",
        isEnable: "",
        created_at: "",
        updated_at: ""
    };

    $scope.searchLyric = function () {
        var result = ApiCall.GetApiCall().success(function (lyrics) {
            $scope.lyrics.id = lyrics.data.id
            $scope.lyrics.singerName = lyrics.data.singerName;
            $scope.lyrics.songName = lyrics.data.songName;
            $scope.lyrics.writtenBy = lyrics.data.writtenBy;
            $scope.lyrics.lyricText = lyrics.data.lyricText;
            $scope.lyrics.isEnable = lyrics.data.isEnable;
            $scope.lyrics.created_at = lyrics.data.created_at;
            $scope.lyrics.updated_at = lyrics.data.updated_at;   
        });
    }
}])

但我认为这不是一个好的做法,我已经尝试过了:

var result = ApiCall.GetApiCall().success(function (lyrics) {
     $scope.lyrics=lyrics.data;
});

在这种情况下,我得到未定义的值:

console.log($scope.lyrics.id); // show Undefined

所以,如果你们能提出更好的方法,我将不胜感激。

最佳答案

除了 console.log,你做的是对的。如果您的日志语句在分配完成之前执行,您将获得未定义的值。

另外我不明白你为什么要执行 var result =

你可以简单地做

ApiCall.GetApiCall('v1', 'lyrics', '1').success(function (data) {
    $scope.lyrics = data.data;
    console.log($scope.lyrics.id);
}).error(fucntion(data){
    console.log(data);
});

关于javascript - 在 angularjs 中获取 json 响应对象的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992034/

相关文章:

java - Servlet Gson().toJson 死循环

javascript - 所选值未出现在 angular-ui-select 中

json - Alamofire 和 SwiftyJSON 在请求函数之外获取值

javascript - WebGL 纹理问题(奇怪的图形故障和映射问题)

javascript - Knockout JS href attr 未在 .NET MVC4 部分页面上绑定(bind)

javascript - 在 AngularJS 中删除页面刷新/重新加载时的 $location 搜索

安卓/Java : how to delay return in a method

java - 如何在android/java中获取json对象中json数组的所有标签名称列表

javascript - Zend 1.12 + Ajax - 提交表单

javascript - AngularJS + NG-Grid 将 row.column.field 传递给 ng-click 事件