$ scope到json的角度编码部分

时间:2015-11-11 01:10:42

标签: json angularjs

我正在使用angular并且我的大多数api都在运行,但是我在使用put函数时遇到了麻烦。我的服务器由arduino托管,无法接收json stringify发送的所有数据。

如何仅使用某些$ scope数据制作JSON obj?

这是我迄今为止所拥有的'chanObj'。警报在某些测试中返回“undefined”,在其他测试中返回范围末尾的空对象。

  $scope.setpointClk = function(channel, setpoint) {
    var channels = JSON.stringify($scope.channels);         //original obj to big
    var chanObj = {setPoint : channel.setPoint, name : channel.name
      };                     //try to create a selected content obj
    alert(chanObj);
    service.putChannels(channels, function() {
      $scope.init();
    });
  }

channels: [{name: null, canal: "0", status: false, temperature: 19.94, setPoint: 0, permission: false,…},…]
0: {name: null, canal: "0", status: false, temperature: 19.94, setPoint: 0, permission: false,…}
1: {name: null, canal: "1", status: false, temperature: 20.37, setPoint: 5, permission: false,…}
2: {name: null, canal: "2", status: false, temperature: 0, setPoint: 5, permission: false, percentOut: 0}
3: {name: null, canal: "3", status: false, temperature: 0, setPoint: 5, permission: false, percentOut: 0}
4: {name: null, canal: "4", status: false, temperature: 19.94, setPoint: 5, permission: false,…}
5: {name: null, canal: "5", status: false, temperature: 19.87, setPoint: 5, permission: false,…}
6: {name: null, canal: "6", status: false, temperature: 19.98, setPoint: 5, permission: false,…}
7: {name: null, canal: "7", status: false, temperature: 19.96, setPoint: 5, permission: false,…}
8: {name: null, canal: "8", status: false, temperature: -50, setPoint: 5, permission: false,…}
9: {name: null, canal: "9", status: false, temperature: -50, setPoint: 5, permission: false,…}

2 个答案:

答案 0 :(得分:0)

只需创建一个新对象并将其传递给put调用,就像使用chanObj对象一样,将其传递给put。

如果要维护很多属性,可以执行以下操作:

var propertiesToCopy = ["setPoint", "name", "foo", "bar"],
   cutdownVersion = {};

for(var key in propertiesToCopy) {
    cutdownVersion[key] = channels[key];
}

然后将cutdownVersion对象传递给put调用。

答案 1 :(得分:0)

您应该在未先调用chanObj功能的情况下创建JSON.stringify。因为这会将您的$scope.channels转换为字符串。

E.g。如何使用chanObj

创建具有特定属性的$scope.channels
$scope.setpointClk = function(channel, setpoint) {
    ...
    var chanObj = {
        setPoint: $scope.channels.setPoint,
        name: $scope.channels.name
    };
    ...
}