三元运算符不在REST配置参数中工作

时间:2015-02-06 19:24:29

标签: javascript angularjs rest

我有这个方法:

getFolderDocuments: function(selectedFolder) {
            if (!angular.isDefined(selectedFolder.selectedTag)) {
                selectedFolder.selectedTag = {};
            }
            if (!angular.isDefined(selectedFolder.docPage)) {
                selectedFolder.docPage = 1;
            }
            if (!angular.isDefined(selectedFolder.pageLimit)) {
                selectedFolder.pageLimit = 10;
            }
            var sort = "desc";
            if (selectedFolder.sortDesc == false) {
                sort = "asc";
            }

            var config = {
                'params': {
                    filters: {
                        authorised: (angular.isDefined(selectedFolder.authorised) && selectedFolder.authorised ? true : false),
                        tag: (angular.isDefined(selectedFolder.selectedTag.id) ? selectedFolder.selectedTag.id : 0),
                        title: (angular.isDefined(selectedFolder.titleFilter) ? selectedFolder.titleFilter : ""),
                        start: ((angular.isDefined(selectedFolder.startFilter) && selectedFolder.startFilter != null) ? selectedFolder.startFilter.getTime() : 0),
                        end: ((angular.isDefined(selectedFolder.endFilter) && selectedFolder.endFilter != null) ? selectedFolder.endFilter.getTime() : 0)},
                    sort: sort,
                    page: selectedFolder.docPage,
                    limit: selectedFolder.pageLimit}
            };
            return $http.get(RESTServer.REST_URL+'/rest/mobile/folder/' + selectedFolder.id + "/document", config);
        }

这应该过滤给定特定参数的文档列表,如标签,标题,创建日期等......

问题是我一直在检查控制台中的值,并且三元运算符(例如,在tag参数中)总是返回false值,即使定义了评估表达式中的元素。

我该如何解决这个问题? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

让我们以你的标签参数为例

(angular.isDefined(selectedFolder.selectedTag.id) ? selectedFolder.selectedTag.id : 0),

正确返回 false ,因为未定义selectedFolder.selectedTag.id。

selectedFolder.selectedTag = {}

除非你在函数参数中传入一个我们无法知道的函数参数中的另一个对象,否则没有id。请清理你的问题。