Действие в руле шаблона не стреляет - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть следующий простой код:

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

Действие в шаблоне не будет выполняться независимо от того, что я делаю. Я подозреваю, что это из-за способа отображения, но независимо от того, что я читаю, я не могу обернуться вокруг него.

Я все еще пытаюсь понять угасающие взгляды, но из того, что я прочитал, мой код в скрипте должен работать. Хотя, похоже, никто не может мне помочь?

(Это в приложении rails 3.2, использующем ember-rails, ember 0.9.4 и гем шаблона руля, кстати).

Любая помощь очень ценится, так как я немного рискнул этим проектом.

Ответы [ 2 ]

9 голосов
/ 01 апреля 2012

Это не отвечает первоначальной проблеме ОП, но соответствует названию, и если у вас есть эта проблема, то поисковые системы указывают вам на эту страницу.Вот одна из возможных причин, по которой действия могут не запускаться: тег может отсутствовать в корневом элементе Ember Application.Так что если у вас есть JS

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

и руль

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

, то ничего не произойдет.Меня несколько часов сбивали с толку.

3 голосов
/ 28 февраля 2012

Поскольку у шаблонов руля нет имен, они вставляются в DOM в тот момент, когда они объявлены - вот почему вы вообще видите что-либо.

Это:

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

Ничего не делает для вас, поскольку content на этом этапе не определено, а шаблон руля не связан с представлением.

Аналогично:

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

Непомогите вам, поскольку templateName указывает на несуществующий шаблон руля, а классы представления никогда не создаются (в противном случае вы получите предупреждение об отсутствующем шаблоне).

Более того:

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

Не будет вызывать функцию a, так как снова этот шаблон просто вставляется один раз в DOM, где он встречается, и a не определен в этом контексте (как и skill).

И, наконец, когда вы приблизите свой код к работе так, как намереваетесь, возникнет проблема с тем, что каждый шаблон руля по умолчанию заключен в div.Следовательно, ваш стол будет иметь div вокруг каждого tr.Это решается изменением tagName: http://emberjs.com/#toc_36

...