2012-03-26 4 views
0

Darunter Rendern bin ich auf der Sekunde sonst ein Objekt, das eine Zeichenfolge für action.DataBind enthält, die app.viewModel.members.divisionPools.addPool(); rendert das Click-Ereignis nicht funktioniert. Mache ich etwas falsch?Knockout.js und dynamische String-Funktion funktioniert nicht

{{if action.IsDownload }} 
        <a href="#" data-bind="download: { url: 'members/' + action.Route().toLowerCase() }">${Title}</a> 
    {{else action.DataBind}} 
        <a href="#" data-bind="click: action.DataBind">${Title}</a> 
    {{else}} 
        <a href="#" data-bind="attr: { href: app.viewModel.members.createRoute(action) }">${Title}</a> 
    {{/if}} 

app.viewModel.members.divisionPools = { 
     addPool: function() { 
      alert('test'); 
     }, 

Antwort

0

Sie erwähnen, dass action.DataBind eine Zeichenfolge ist. Dies funktioniert nicht, eine "Klick" -Bindung erwartet eine Funktion, keine Zeichenfolge.

+0

Es ist in einer Vorlage. –

0

Wenn Sie JavaScript-Funktionen aufrufen wollen dynamisch würde ich bei How do I call a dynamically-named method in Javascript?

In Ihrem Markup einen Blick darauf werfen würden Sie etwas entlang der Linien von haben:

<a href="#" data-bind="click: function() { myViewModel.callDynamicFunction($data.action.DataBind) }"> 

und nach Ihrer Ansicht Modell die Funktion hinzufügen :

callDynamicFunction: function(funcName) { .. call function dynamically ... } 
Verwandte Themen