1

例はこちら http://jsfiddle.net/tobikko/ysFC6/10/

OptionValuePath と OptionLabelPath に何を入力すればよいかを実際に調べるにはどうすればよいですか? ご覧のとおり、ドロップダウンにはリストがありますが、値は表示されません。

この場合、それが OptionLabelPath: "content.firstName" であることはわかっていますが、知らなかったらどうなるでしょうか。

ビューのコンテンツを調べるための focusOut 関数を作成しました。このようになります コンテンツ

私が問題を抱えている実際のアプリでは、コンテンツ内の各オブジェクトにember1340135889380_meta オブジェクトまたは __proto部分が含まれていません。それが問題ですか?どうすれば修正できますか?

<script type="text/x-handlebars">
  {{view App.SelectView }}

  <p>Selected: {{App.selectedPersonController.person.fullName}}
    (ID: {{App.selectedPersonController.person.id}})</p>
</script>
window.App = Ember.Application.create();

App.SelectView = Ember.Select.extend({
    contentBinding: "App.peopleController",
    selectionBinding: "App.selectedPersonController.person",
    optionLabelPath: "firstName",
    optionValuePath: "id",
    prompt: "select",

  focusOut: function () {
        var test = this.get('content');
   }  
})


App.Person = Ember.Object.extend({
    id: null,
    firstName: null,
    lastName: null,

    fullName: function() {
        return this.get('firstName') + " " + this.get('lastName');
    }.property('firstName', 'lastName').cacheable()
});

App.selectedPersonController = Ember.Object.create({
    person: null
});


App.peopleController = Ember.ArrayController.create({
    content: [
        {
        id: 1,
        firstName: 'Yehuda',
        lastName: 'Katz'},
    {
        id: 2,
        firstName: 'Tom',
        lastName: 'Dale'},
    {
        id: 3,
        firstName: 'Peter',
        lastName: 'Wagenet'},
    {
        id: 4,
        firstName: 'Erik',
        lastName: 'Bryn'}
    ]
});
4

1 に答える 1

-1

ドキュメントに記載されているように、常にcontent.プロパティのパスの先頭に追加する必要があります。これは、idおよびとして使用されます。http://jsfiddle.net/pangratz666/B2rJN/labelを参照してください。

オブジェクトの言及さember1340135889380_metaれた類似のプロパティは、それがのインスタンスであることを示していますEmber.Object。ただし、のエントリはのEmber.Selectインスタンスcontentである必要はありませんEmber.Object。例で使用しているように、パスは「通常の」オブジェクトでも機能します。


背景:

Ember.View基本的に次のようにレンダリングされます。

<select>
  {{#if view.prompt}}
    <option value>{{view.prompt}}</option>
  {{/if}}
  {{#each view.content}}
    {{view Ember.SelectOption contentBinding="this"}}
  {{/each}}
</select>

したがって、各反復では、現在のアイテムもEmber.SelectOptionビューで使用できるようになりますcontent。そのため、 /プロパティcontent.へのパスを指定するときに先頭に追加する必要があります。理にかなっていますか?idlabel

于 2012-06-19T21:24:22.193 に答える