首页 > 解决方案 > 我可以在 radListView.itemTemplates 中使用源项值吗

问题描述

我正在我的页面上创建一个 radListView 数组,对于每个 radList,我实现了一个“radListView.itemTemplates”,如下所示:

radListView.itemTemplates = [
                {
                    key: "notaBaixa",
                    createView: () => {
                        const gridLayout = new GridLayout();

                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.STAR));
                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.AUTO));
                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.AUTO));
                        gridLayout.verticalAlignment = "middle";
                        gridLayout.css = "border-bottom-width:1px; border-bottom-color:black;";

                        const lblDisciplina = new Label();
                        lblDisciplina.col = 0;
                        lblDisciplina.setInlineStyle("padding:10px 0 0 10px; height:60px;");
                        lblDisciplina.verticalAlignment = "middle";
                        lblDisciplina.text = "{{disciplina}}";

                        const lblnotaTotal = new Label();
                        lblnotaTotal.col = 1;
                        lblnotaTotal.setInlineStyle("padding:10px 0 0 10px; height:60px; color: red;");
                        lblnotaTotal.verticalAlignment = "middle";
                        lblnotaTotal.text = "{{nota_total}}";

                        const lblFaltasTotal = new Label();
                        lblFaltasTotal.col = 2;
                        lblFaltasTotal.setInlineStyle("padding:10px 0 0 10px; height:60px;");
                        lblFaltasTotal.verticalAlignment = "middle";
                        lblFaltasTotal.text = "{{faltas_total}}";

                        gridLayout.addChild(lblDisciplina);
                        gridLayout.addChild(lblnotaTotal);
                        gridLayout.addChild(lblFaltasTotal);

                        return gridLayout;
                    }
                },
                {
                    key: "notaAlta",
                    createView: () => {
                        const gridLayout = new GridLayout();
                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.STAR));
                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.AUTO));
                        gridLayout.addColumn(new ItemSpec(1, GridUnitType.AUTO));
                        gridLayout.verticalAlignment = "middle";
                        gridLayout.css = "border-bottom-width:1px; border-bottom-color:black;";

                        const lblDisciplina = new Label();
                        lblDisciplina.col = 0;
                        lblDisciplina.setInlineStyle("padding:10px 0 0 10px; height:60px;");
                        lblDisciplina.verticalAlignment = "middle";
                        lblDisciplina.text = "{{disciplina}}";

                        const lblnotaTotal = new Label();
                        lblnotaTotal.col = 1;
                        lblnotaTotal.setInlineStyle("padding:10px 0 0 10px; height:60px; color: blue;");
                        lblnotaTotal.verticalAlignment = "middle";
                        lblnotaTotal.text = "{{nota_total}}";

                        const lblFaltasTotal = new Label();
                        lblFaltasTotal.col = 2;
                        lblFaltasTotal.setInlineStyle("padding:10px 0 0 10px; height:60px;");
                        lblFaltasTotal.verticalAlignment = "middle";
                        lblFaltasTotal.text = "{{faltas_total}}";

                        gridLayout.addChild(lblDisciplina);
                        gridLayout.addChild(lblnotaTotal);
                        gridLayout.addChild(lblFaltasTotal);

                        return gridLayout;
                    }
                }
            ];

如您所见,在我的标签中,我试图获取源项目的某些属性,但标签不理解为属性。如何将标签文本值设置为项目源属性?

标签: nativescriptnativescript-angular

解决方案


参考数据绑定文档。您使用的语法仅在 XML 上有效,XML 解析器将解释语法并启动元素和数据模型之间的绑定。

您必须在目标元素上调用bind方法并传递源和目标属性以编程方式执行相同操作。

例如,

lblDisciplina.text = "{{disciplina}}";

应该

lblDisciplina.bind({
   sourceProperty: "disciplina",
   targetProperty: "text",
   twoWay: false
});

推荐阅读