我有一个对象数组,一旦通过两个下拉选择框选中我的范围,第一个框选择名称第二个以选择格式。
对象的例子
{
"name": "tim",
"format": [
{"Fname": "a", "id": "1"},
{"Fname": "b", "id": "2"},
{"Fname": "c", "id": "3"}
]
},
我使用
将其发送到范围 $scope.productTypeChange = function () {
$scope.formats = $scope.productsandformats.find(ps => ps.name == $scope.formData.ProductType.name)
}
我的范围就像
一样 {"ProductType":{"name":"tim"},"formatType":{"Fname":"a","id":"1"}}
然后我希望根据范围中打印的ID值得到一个if语句,到目前为止我已经尝试过获取ID值,但它似乎不起作用,这是获取ID>的正确方法吗?
$scope.setCanvasSize = function() {
divHeight = $('.image-builder').height();
if ($scope.formData.ProductType.name.id = 1) {
// Aratio = 0.67;
Aratio = 2;
} else if ($scope.formData.ProductType.name.id = 2) {
Aratio = 0.56;
} else if ($scope.formData.ProductType.name.id = 3) {
divHeight = divHeight / 1.5;
Aratio = 2;
} else if ($scope.formData.ProductType.name.id = 4) {
Aratio = 0.67;
} else {
Aratio = 1
}
canvas.setHeight(divHeight - 15);
canvas.setWidth((divHeight - 15) * Aratio);
canvas.renderAll();
$scope.position();
};
答案 0 :(得分:0)
您正在错误地使用该对象。如果
$scope.formats={"ProductType":{"name":"tim"},"formatType":{"Fname":"a","id":"1"}};
然后要获取id,你必须像这样访问对象
$scope.formats.formatType.id
您还必须在if语句中正确检查。在您的问题中,您要分配值而不是比较。所以,它应该是这样的:
if($scope.formats.formatType.id=="1"){
//do calculations
}
答案 1 :(得分:0)
为什么使用数组访问“值”(假设,因为你正在使用find),如“$ scope.formData.ProductType.name.id”,而不是使用“$ scope.formats”访问值。 formatType.id“(您已经过滤了。)
此外,在过滤后的变量中,您没有与“$ scope.formData.ProductType.name.id”类型相匹配的格式,而是必须像这样访问变量 - > “$ scope.formats.formatType.id”