Question

J'ai le code simple suivant :

(JSFiddle) http://jsfiddle.net/aR2UX/3/

L'action dans le modèle ne se déclenchera pas, quoi que je fasse.Je soupçonne que cela soit dû à la façon dont la vue est rendue, mais peu importe ce que je lis, je n'arrive pas à comprendre.

J'essaie toujours de comprendre les vues Ember, mais d'après ce que j'ai lu, mon code dans le violon devrait fonctionner.Cela ne semble pas être le cas, quelqu'un peut-il m'aider ?

(C'est dans une application rails 3.2, utilisant ember-rails, ember 0.9.4 et la gemme de modèle de guidon, d'ailleurs).

Toute aide est grandement appréciée car j'ai pris un peu de risque sur Ember pour ce projet.

Était-ce utile?

La solution

Puisque les modèles de guidons n'ont pas de noms, ils sont insérés dans le DOM au moment où ils sont déclarés – c'est pourquoi vous voyez quelque chose.

Ce:

{{#each content}}
{{view Skills.RecommendedSkillView skillBinding="this"}}
{{/each}}

Ne fait rien pour toi depuis content n'est pas défini à ce stade et le modèle de guidon n'est pas associé à la vue.

De même:

Skills.RecommendedSkillsListView = Ember.View.extend({
    templateName: 'app/templates/recommended_skills_list',

Cela ne t'aide pas depuis templateName pointe vers un modèle de guidon inexistant et les classes de vue ne sont jamais instanciées (sinon vous recevriez un avertissement concernant un modèle manquant).

En outre:

<td><a href="#" {{action "a"}}>DO A THING</a></td>

N'appellera pas la fonction a puisque encore une fois ce modèle n'est inséré qu'une seule fois dans le DOM où il est rencontré et a n'est pas défini dans ce contexte (et n'est pas non plus skill).

Et enfin, lorsque vous rapprocherez votre code du fonctionnement souhaité, il y aura un problème car chaque modèle de guidon est, par défaut, enveloppé dans un div.Votre table aura donc div autour de chaque tr.Ceci est résolu en changeant le tagName: http://emberjs.com/#toc_36

Autres conseils

Cela ne répond pas au problème d'origine de l'OP, mais cela correspond au titre, et si vous avez ce problème, les moteurs de recherche vous pointent sur cette page.Voici une raison possible pour laquelle les actions pourraient ne pas tirer: la balise pourrait ne pas être dans la racine de l'application Ember.Donc, si vous avez JS

FooApp = Ember.Application.create({
  rootElement:"#foo",
  test: function() {
    alert("testing");
  }
});

et guidonbars

<div id="foo"></div>
<a {{action "test" target="FooApp"}}>Fail</a>

Alors rien ne va arriver.M'avait été déconcerté pendant des heures.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top