我正在使用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,…}
答案 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
};
...
}