【问题标题】:How to set the json in right format in javascript如何在javascript中以正确的格式设置json
【发布时间】:2017-06-30 10:45:58
【问题描述】:

查看模型

function CustInfo() {
    var vm = this;

    vm.CustInfo = {
        "custId": "",
        "custTitle": "",
        "custName": ""
    };

    return vm;
}

全球价值观

(function () {
'use strict';

var obj = null;

angular
   .module('app')
   .value('Cust_Info', new CustInfo());

 })();

角度控制器

(function () {
"use strict";

angular
    .module("app")
    .controller("custCtrl", custCtrl);

custCtrl.$inject = ['dataService','Cust_Info'];

/* @ngInject */
function custCtrl(dataService, Cust_Info) {
    var vm = this;

    function _GetData() {

        //scar
        dataService.read(id).then(function (data) {
            if (data.fields != null) {
                //set meta data
                Cust_Info.custId = data.fields.id;
                Cust_Info.custNumber = data.fields.number;
                //store into session storage
                sessionStorage.info = JSON.stringify(cust_Info);
            }
        });


    }


    return vm;
}
})();

但是当服务被调用并且我检查 sessionStorage 时,custInfo 如下所示。

{
"CustInfo": {
    "custId": "",
    "custTitle": "",
    "custNumber": ""
},
"custId": "1",
"custNumber": "021758"
}

虽然我试图将 json 设置如下

{
"CustInfo": {
    "custId": "1",
    "custNumber": "021758"
    "custTitle": "",
 }
}

这是什么原因造成的?

此外,我想知道是否可以不将其存储在会话存储中,是否可以将 CustInfo 更新的值访问到不同的控制器中,因为我已将其声明为全局值。

【问题讨论】:

    标签: javascript jquery html angularjs json


    【解决方案1】:

    解决方案的第一部分

    你没有返回正确的对象

    function CustInfo() {
        var vm = this;
    
        vm.CustInfo = {
            "custId": "",
            "custTitle": "",
            "custName": ""
        };
    
        return vm.CustInfo ;
    }
    

    解决方案的第二部分

    如果您将Cust_Info 定义为常量,您可以在您的应用程序中访问它。然后,您可以将其注入任何控制器、配置或服务

    (function () {
    'use strict';
    
    var obj = null;
    
    angular
       .module('app')
       .constant('Cust_Info', 
        return new CustInfo());
    
     })();
    

    【讨论】:

    • 谢谢!!一旦允许,我会将其标记为已接受。同时,您能否分享您对问题第二部分的见解(底部为粗斜体)
    • 但它们不是一成不变的。我不能以相同的常量方式访问它,但使用 .value()
    • 即使它们被声明为常量,它也将在整个应用程序中可用,并且您可以更新值并且更新后的值将可用
    • 好的。谢谢,如果你觉得这篇文章值得,你可以点赞吗?
    • 很高兴能提供帮助。 :)
    【解决方案2】:

    您正在为您的CustInfo object 添加额外的CustInfo 属性。

    试试下面的代码,

    function CustInfo() {
            var vm = this;
    
            vm = {
                "custId": "",
                "custTitle": "",
                "custName": ""
            };
    
            return vm;
        }
    

    【讨论】:

      猜你喜欢
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      相关资源
      最近更新 更多