2015-12-13 7 views
1

Я пытаюсь получить плагин jQuery FooTable, работающий в моем приложении mithril. У меня есть конфигурационный вызов, как это в моем компоненте:MithrilJS, передающий переменные в config на вызов m()

view: function(ctrl, args) { 
    return m("table#globalConfigTable", {config: execFooTable}) 
} 

this.execFooTable = function(element, isInit, context) { 
    $('#globalConfigTable').footable({ 
    "columns": columns(), 
    "rows": args.configRows 
    }) 
} 

args.configRows мое обещание вернулось из моего запроса GET, что я передаю к этому компоненту. Я вижу, что он успешно вызывает функцию execFooTable, но я не могу понять, как получить доступ к моей переменной args.configRows. Я пробовал context.configRows и множество других вещей, но все они возвращаются как неопределенные.

Может ли кто-нибудь помочь мне? Спасибо.

+1

так, как вы объявили execFooTable он не имеет доступа к арг переменной потому что это выходит за рамки. Если вы перемещаете его, вместо него внутри функции просмотра, он должен иметь доступ к args. – Vier

+0

Также используйте параметр 'isInit', чтобы не вызывать плагин более одного раза. – ciscoheat

ответ

2

Вы можете использовать функцию ниже:

// Partially apply arguments to a function. Useful for binding 
// specific data to an event handler. 
// Example use: 
// 
// var add = function (x,y) { return x + y; } 
// var add5 = add.papp(5) 
// add5(7) //=> 11 
// 
Function.prototype.papp = function() { 
    var slice = Array.prototype.slice, 
     fn = this, 
     args = slice.call(arguments); 
     return function() { 
      fn.apply(this, args.concat(slice.call(arguments))); 
     } 
} 

Затем вы можете переписать код так:

view: function(ctrl, args) { 
    return m("table#globalConfigTable", {config: execFooTable.papp(args)}) 
} 

this.execFooTable = function(args, element, isInit, context) { 
    $('#globalConfigTable').footable({ 
    "columns": columns(), 
    "rows": args.configRows 
    }) 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^