使用 jQuery TMPL 时在原型方法中访问自定义 OBJ 属性的差异



我不太确定我的方法是错误的,还是我只是需要一种优雅的方法来解决我正在做的事情。

我有一个自定义的Javascript对象,在这个例子中叫做Dude。Dude有一个名为height的属性和一个在原型上定义的名为reallyTall的方法

var Dude = function(props) {
    this.height = "tall";
};
Dude.prototype.reallyTall = function() {
    return this.height + " as heck";
};

我正在创建一个Dudes数组(在这个例子中只有一个项目),并希望使用jquery.tmpl()来获取我的Dudes,并以某种方式将它们附加到我的HTML中的div。(在这个简单的例子中没有缓存模板)

var guy = new Dude();
jQuery.tmpl("<li>${reallyTall}</li>", guy).appendTo('#foo');

其中#foo为空

    在HTML

    我想保持我的Dude对象'通用'足够,以便如果有人不想用jquery使用它们。他们不需要....意思是,有人可能想实现类似于上面的东西,但更愿意做这样的事情:

    jQuery("#foo").append('<li>' + guy.reallyTall() + '</li>'));
    

    这就是我的问题所在- 这个的值在realallytall方法中。

    当不使用tmpl()时,我可以通过执行

    来访问Dude的height属性
    this.height
    

    但是当使用tmpl()时,我必须像这样访问它:

    this.data.height
    

    我可以在reallyTall方法中这样做:

    this.height || this.data.height
    

    但是那看起来很脏。
    我希望有人能更好地解决我的问题,或者可以指出我是否在这里错误地使用jquery.tmpl()。

    这是我的例子:
    http://jsfiddle.net/FTF5M/2/

尝试在模板中使用${$data.reallyTall()}

http://jsfiddle.net/rniemeyer/9CtsV/

最新更新