2

Ember 1.0.0 RC3 は、という名前のハンドルバー ヘルパーを提供します{{input}}。基になるコントローラーで String プロパティを更新するだけでなく、入力が変更されたときに基になるコントローラーでメソッドを追加で呼び出したいと考えています。

{{input}}テキストフィールドへの変更後にコントローラーメソッドを呼び出す方法はありますか?

4

1 に答える 1

3

.observes("propertyChangedByInputHelper")変更に反応する on the controller メソッドを 使用します。

<--Handlebars template -->
    <script type="text/x-handlebars" id="autocomplete">
        {{input type="text" value=searchText placeholder="Search users..."}}
        <table>
            {{#each searchResults}}
                <tr><td>
                {{#linkTo "user" this}}
                    {{firstName}} {{lastName}}
                {{/linkTo}}
                </td></tr>
            {{/each}}
        </table>
    </script>

.

//inside Ember application / app.js
App.AutocompleteController = Ember.ObjectController.extend({
    searchText: null,         // mutated by "autocomplete" Handlebars template
    searchResults: Ember.A(), //initialize to empty array

    searchForUsers: function() {
        this.set("searchResults", Ember.A() ); // clear possibly non-empty array
        var searchResultsBuilder = Ember.A();
        //...
        //... making modifications to searchResultsBuilder
        //...
        this.get("searchResults").addObjects(searchResultsBuilder);
    }.observes("searchText")
});

注意:searchText変更があった場合、メソッド.property("searchText")をトリガーするには十分ではありませんsearchForUsers:.property(..)メソッドを要求に応じて遅延的にのみ動作さ.observes(..)せ、メソッドを熱心に動作させます。

于 2013-06-10T01:46:27.147 に答える