wechat-miniprogram / glass-easel

Multiple-backend component-based JavaScript framework
MIT License
243 stars 34 forks source link

`wx:if` should work on `include` tag #118

Closed SgLy closed 10 months ago

SgLy commented 11 months ago

wx:if directive should be able to control an <include> tag, like

<include wx:if="{{ condition }}" src="path/to/template" />

failing test:

#[test]
fn if_on_include() {
    const SRC: &str = r#"<include wx:if="{{c}}" src="p"/>"#;
    const GEN: &str = r#"<block wx:if="{{c}}"><include src="p"></include></block>"#;
    let tree = parse_tmpl(SRC, r#""#).unwrap();
    assert_eq!(tree.to_string(), GEN);
}
SecretCastle commented 11 months ago

这里引出一个问题,小程序组件设计初期时,是否考虑过通过使用条件语句来针对<include /> 做按需渲染??文档未做详细阐述。个人理解引用一般用于固定某一处或多处的展示。

LastLeaf commented 11 months ago

这里引出一个问题,小程序组件设计初期时,是否考虑过通过使用条件语句来针对<include /> 做按需渲染??文档未做详细阐述。个人理解引用一般用于固定某一处或多处的展示。

是个 undefined behavior 。目前的实现 <include /><import /> 是同一个逻辑路径,没有 wx:if 支持的。

为了与以前的逻辑对齐,这里需要加上 <include /> 的条件和循环控制支持。