Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何在 #block 中使用 #script( ) #83

Open
ghost opened this issue Jun 20, 2016 · 6 comments
Open

如何在 #block 中使用 #script( ) #83

ghost opened this issue Jun 20, 2016 · 6 comments
Assignees
Labels

Comments

@ghost
Copy link

ghost commented Jun 20, 2016

背景是这样的:
目前正在使用 jello 开发项目,info.vm 是一个公共的文件,所有的页面文件都会引用,在它内部加载了一个用于全部页面文件的 info.js

遇到的问题:
业务有变化,在其中加入了独立逻辑的新文件( sq.vm,它有自己的 sq.js ),在样式方面仍然沿用 info.vmsq.vm的父模板是 info.vm
他们的 js 文件都拥有 submit 等等事件,所以出现了不必要的多次监听。
我想过使用e.stopImmediatePropagation方法,但是发现可能是继承的关系, info.js 先于 sq.js 加载,是否可以让sq.vm仅仅覆盖 info.vmjs 部分,如下:

// info.vm
#script()
    require(['js/page/info/info'], function (InfoPage) {
        InfoPage._init()
    })
#end

//sq.vm
#script()
    require(['js/page/sq/sq'], function (Sq) {
        Sq._init()
    })
#end

尝试过使用 #block 包含 #script 的方法,但是发现不行

@2betop 2betop added the bug label Jun 20, 2016
@2betop 2betop self-assigned this Jun 20, 2016
@2betop
Copy link
Contributor

2betop commented Jun 20, 2016

居然 #script 没法用 #block 替换

@2betop
Copy link
Contributor

2betop commented Jun 21, 2016

特意试了下,用 #block 是可以的。

可能你没用正确,用来覆盖的 #block 必须是 #extend 的孩子节点,你别放到某个 #block 里面。

@2betop
Copy link
Contributor

2betop commented Jun 21, 2016

info.vm

<div>xxx</div>
#block("info_script")
#script()
    require(['js/page/info/info'], function (InfoPage) {
        InfoPage._init()
    })
#end
#end

sq.vm

#extend("./info.vm")
  #block("info_script")
  #script()
    require(['js/page/sq/sq'], function (Sq) {
        Sq._init()
    })
#end
  #end
#end

@ghost
Copy link
Author

ghost commented Jun 21, 2016

貌似这边依然不行,我进行了覆盖,但是发现在 sq 页面 中,依然还是会加载 info.vm 中引入的 js 文件,略有蛋疼。我这边使用的 jellov1.0.3 版本,不知道是否是版本的问题?多谢帮助

@2betop
Copy link
Contributor

2betop commented Jun 21, 2016

我刚刚是 fis3-jello 测试的,你替换下最新的 jar 包试试? jello server open 后可以能找到原来的 jar 文件。

最新的jar 有两个途径。

  1. https://github.com/fex-team/fis-velocity-tools 自己 maven package 后就能生成。
  2. fis3 server start --type jellofis3 server open 后可以找到。

@ghost
Copy link
Author

ghost commented Jun 21, 2016

可以了。
多谢啦,我先完成业务代码,后续考虑再是否升级到 fis3-jello

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant