ハンドルバーの if ステートメントでいくつかの値を比較しようとしましたが、ハンドルバーがこれを嫌い{{#if value == 'otherValue'}}
、文字列、ブール値、または関数名を期待しているため、明らかに失敗しました。それは問題ありませんが、ヘルパーでできるように関数にパラメーターを渡そうとしましたが{{action}}
、それもうまくいきませんでした。コンソールでこれを取得しました
Error: assertion failed: You must pass exactly one argument to the if helper
そのため、ビューでこれを行うことにしましたが、ember js は、スコープ内のテンプレート値にアクセスすることは珍しく、例のない貧弱な段落しか提供しないという点をガイドします。 http://emberjs.com/guides/understanding-ember/the-view-layer/#toc_accessing-template-variables-from-views
したがって、これを実行しようとすると、これらの変数にアクセスする際に問題が発生しました。この方法this.get('controller.templateVariables')
で View へのフル パスを使用してみましたが、値が未定義であるか.get()
、メソッドとして存在しませんでした。
そのため、現時点では変数を DOM データ プロパティに保存することにしましたが{{#view App.TabsView data-title="{{tab}}"}}
、{{tab}}
View からthis.get('data-title')
.
私に残された唯一の方法は、ビュー内に追加の要素を挿入してそこに変数を保存し、その後jQueryクラスセレクターでそれにアクセスすることでした。しかし、関数が実行された時点では要素はDOMにまだ存在していないため、その時点ではisVisible
値にアクセスできません。それはなぜthis.get('element')
戻ってきたのかを説明していnull
ます。
ember js での同様の例は、ほとんどが のようなもの if (someLogic) {}
になりますが、使用できる変数がない場合にロジックを実行するにはどうすればよいでしょうか。
質問
私の質問を簡単にするために - どうすれば ember js でそのようなことを行うことができますか? のようにシンプル
// have objects stored in controller
var obj = [{title:'Tab1'}, {title:'Tab2'}, {title:'Tab3'}];
// loop via them in the DOM
obj.forEach(function(tab) {
// do this kind of comparison
if( tab.title == currentTab() ) {
// do something here
}
});
それが不可能な場合、同様の機能を実現する他の方法は何でしょうか?