0

Ember オブジェクトをハンドルバー ヘルパーに渡したいのですが、以下に示すようにヘルパーを使用しましたが、正しいオブジェクトを受け取りません。コンソールにオブジェクトの名前を出力するだけです。以下のコードを参照してください

//ember helper
Ember.Handlebars.registerHelper('act', function (value) {
            console.log(value); //It prints as item.label               
            return value+"1";
        }); 

//template
     {{#each item in content}}
                <li ><a {{bindAttr href="item.link"}}>{{act item.label}}</a></li>
                {{/each}}



 // Ember model which i am using


  App.AllRoutes = [Ember.Object.create({                
            label: "index",
            link:"#/",

        }),
  Ember.Object.create({
            label: "second",                
            link: "#/second",                
        }),

更新 srinivasan ソリューションは機能しますが、以下に示す問題では機能しません。registerBoundHelper はスクリプト要素で値を返します。そのため、タグ内では使用できません。他に助けはありますか?

//ember helper
Ember.Handlebars.registerBoundHelper('act', function (value) {
            console.log(value); //It prints as item.label 
          if (value == "somevalue"){ return  new Handlebars.SafeString("class='active'"); }

        }); 

//template
     {{#each item in content}}
                <li {{act item.label}} ><a {{bindAttr href="item.link"}}>{{label}}</a></li>
                {{/each}}

Ember.VERSION : 1.0.0-rc.7、Handlebars.VERSION : 1.0.0 を使用しています

前もって感謝します...

4

2 に答える 2

0

あなたの質問を理解しているかどうかわかりません。ヘルパーに渡しitem.labelていますが、アイテムを引数として取得することを期待していますか? なぜそうしないの{{act item}}ですか?

また、なぜEmberに既に存在する{{#linkTo}}ヘルパーをエミュレートしようとしているのですか?

于 2013-08-21T13:06:05.930 に答える
0

以下をご確認ください。

ジャバスクリプト:

App=Em.Application.create({});

App.Router.map(function(){
    this.route('all');
    this.route('index');
    this.route('second');          
});

Ember.Handlebars.registerBoundHelper('act', function (value) {              
        return value+"1";
    }); 

App.IndexRoute=Em.Route.extend({
    redirect:function(){this.transitionTo('all');}
});

App.AllRoute =Em.Route.extend({
    model:function(){
        return  [Ember.Object.create({                
        label: "index",
        link:"#/"
    }),
      Ember.Object.create({
        label: "second",                
        link: "#/second"                
    })];
 }
});

HTML

<script type="text/x-handlebars" >
    {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="all">
           {{#each item in controller}}
                <li ><a {{bindAttr href="item.link"}}>{{act item.label}}</a></li>
                {{/each}}


</script>
于 2013-08-21T19:26:00.273 に答える