【问题标题】:Copy attribute from DOM node into a dijit widget?将属性从 DOM 节点复制到 dijit 小部件?
【发布时间】:2012-07-02 08:24:43
【问题描述】:

我有这样的html标记

<button id="button1" onclick="alert='yup'"></button>

我想制作一个使用该 DOM 作为锚点的按钮小部件

var button = new Button({label: "button"}, "button1")

如何将 onclick 属性复制到按钮小部件中?我之所以要这样做是因为我使用的 web 框架 (lift) 在将按钮添加到 dijit 小部件之前添加了一些功能。

【问题讨论】:

  • 用你的框架给你的html添加一个data-dojo-type然后用dojo解析器把整个东西转换成一个小部件不是更好吗?
  • 我不喜欢将所有内容都粘贴在 HTML 中(实际上,我已经尝试过您的解决方案并且效果很好)。我认为将所有内容都粘贴在 js 中会更干净。我想知道这是否可能
  • 有可能是的.. 我猜这取决于你的道场版本。如果您的框架允许,您可以将所有添加的功能放入标签上的 data-dojo-props='someFunc: function(param){//whatever}, someProp: someValue' 中
  • 在最坏的情况下,您始终可以手动使用 DOM 访问器从 DOM 节点获取数据,但正如 PEM 所说,Dojo 方式可能会更干净。
  • 我使用声明式风格做了一些模拟,并将其与使用 dojo.attr 的 hack 进行比较。声明式看起来好多了。我想我会坚持声明式的

标签: javascript scala lift dojo


【解决方案1】:

PEM 是绝对正确的,为此使用 dojo 解析器(onclick 的关键字将大写'C':“onClick='alert(true)'”或“data-dojo-props='onClick:function( ) {alert(true)}'"。

无论如何,这是实现它的一种方法

var dom = dojo.byId('button1');
var fn = eval(dom.onclick.toString());
dom.onclick = null;
var button = new Button({label: "button", onClick:fn}, "button1");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多