簡體   English   中英

車把模板中的動作未觸發

[英]Action in handlebars template not firing

我有以下簡單的代碼:

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

無論我做什么,模板中的操作都不會觸發。 我懷疑這是由於視圖的呈現方式造成的,但無論我閱讀什么,我都無法理解它。

我仍在嘗試理解 ember 視圖,但是從我在小提琴中讀到的代碼應該可以工作。 不過好像不行,有誰能幫幫我嗎?

(這是在 rails 3.2 應用程序中,使用 ember-rails、ember 0.9.4 和把手模板 gem,順便說一句)。

非常感謝任何幫助,因為我為這個項目承擔了一些 ember 風險。

這並沒有回答 OP 的原始問題,但它符合標題,如果您有這個問題,那么搜索引擎會將您指向此頁面。 以下是操作可能不會觸發的一個可能原因:標簽可能不在 Ember 應用程序的 rootElement 內。 所以如果你有JS

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

和車把

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

那么什么都不會發生。 讓我困惑了幾個小時。

由於車把模板沒有名稱,它們會在聲明時插入到 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 因此,您的桌子將在每個tr周圍都有div 這是通過更改tagName解決的: http : //emberjs.com/#toc_36

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM