从Angular范围获取ID值并在statment中使用

时间:2017-07-06 15:54:00

标签: javascript angularjs

我有一个对象数组,一旦通过两个下拉选择框选中我的范围,第一个框选择名称第二个以选择格式。

对象的例子

 {
    "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();
};

2 个答案:

答案 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”