如何在不使用eval()的情况下在Backbone.js中创建不同的链接?

时间:2011-11-21 08:37:17

标签: javascript jquery backbone.js

我有链接,我想根据链接做不同的事情。因此我有一个数据结构:

var data = [{"name":"foo", "onClick":"baz()"}, {"name":"bar", "onClick":"bam()"}];

目前,在视图中我有一个函数运行,它接受项目并执行eval(item.onClick),并且可以工作,只是感觉就像一个安全漏洞。 我可以在渲染视图时将onClick放入html中,但这感觉不对。

有谁知道这样做的方法?

3 个答案:

答案 0 :(得分:3)

您可以在数据中嵌入函数

var data = [{"name":"foo", "onClick":baz}, {"name":"bar", "onClick":bam}];
item.onClick();

您可以查看here了解更多有用的信息

答案 1 :(得分:3)

骨干视图有delegateEvents function

var MyView = Backbone.View.extend({

  events: {
    "click button[name='foo']": "baz",
    "click button[name='bar']": "bam"
  },


  baz: function(){ ... }

  bam: function(){ ... }

答案 2 :(得分:0)

简单 - 即使您没有为函数调用实现对象容器。

function baz(){ 
    ....
}
function bam(){ 
    ....
}

并且,假设您将此作为JSON回调:

function jsonCallback(data){
    /*some code*/
    window[data.onClick]();
    /* some more code */
}