Upworks
Upworks

Reputation: 267

EmberJS - How to call view method from inside a nested {{#each}}

I need to trigger the {{showAlias}} view method from within the {{#each content.activitytypes}} I have tried {{_parentView.showAlias}}. I believe I need to call it on the parent's parent, is that correct and how? I can call the {{showAlias}} outside of the {{#each...

Handlebars Template

    <script type="text/x-handlebars">
    <h2>Activities</h2>
    <ul>            
        {{#each Km.activityController}}
        {{#view Km.ActivityView contentBinding="this"}}
            <li>
                {{content.id}}:{{content.name}}
                <ul>
                {{#each content.activitytypes}}
                    <li>{{showAlias}}
                        {{name}} {{aliasname}}
                    </li>
                {{/each}}
                </ul>
            </li>
        {{/view}}   
        {{/each}}
    </ul>
</script>

View

Km.ActivityView = Em.View.extend({

showAlias: function () {
    var arr = this.getPath('content.activitytypes'),
        show = false;
        console.log(arr)
        arr.forEach(function(item) {
            var aliasArr = item.showaliasaccountid;
            if (typeof aliasArr !== 'undefined') {
                if (jQuery.inArray(2,aliasArr)) {
                    console.log(aliasArr);
                    show = true;
                }
            }
        });
}.property('[email protected].@each'),
});

Upvotes: 1

Views: 2044

Answers (1)

Ryan
Ryan

Reputation: 3594

{{parentView.showAlias}} will work, but in these situations with nested views and sub eachs I always find the code to be more maintainable with CollectionViews. Otherwise you end up stuffing too much inside of a single template/view.

http://docs.emberjs.com/#doc=Ember.CollectionView&src=false

Upvotes: 3

Related Questions