javascript - View controller needs: property not working -
i have view, attach controller via controller: on create , want require controller i'd using needs:. when add i'm getting error "uncaught typeerror: cannot call method 'has' of null"
templates:
<script type="text/x-handlebars" charset="utf-8"> <div id="viewport"> {{view app.playerview}} {{controllers.currentuser.content.name}} </div> </script> <script type="text/x-handlebars" data-template-name="player" charset="utf-8"> <button {{action play on="click"}}>play</button> </script>
js:
app = ember.application.create(); app.user = ember.object.extend({ name:'john' }); app.applicationroute = ember.route.extend({ setupcontroller: function() { this.controllerfor('currentuser').set('content', app.user.create({ name:'jose' })); } }); //controllers app.applicationcontroller = ember.controller.extend({ needs:['currentuser'] }); app.currentusercontroller = ember.controller.extend(); app.playercontroller = ember.controller.extend({ isplaying: false, //needs:['currentuser'], //uncomment break!! play: function() { this.toggleproperty('isplaying'); alert(this.get('isplaying')); } }); //views app.playerview = ember.view.extend({ templatename:'player', tagname: 'footer' }); app.playerview = app.playerview.create({ classnamebindings: ['controller.isplaying:playing'], controller: app.playercontroller.create() })
i've set fiddle here: http://jsfiddle.net/84f9n/ (just uncomment line in playercontroller)
you can use {{render}}
helper render view/controller.
from docs:
{{render}}
several things:
- gets singleton instance of corresponding controller renders
- the named template using controller sets model of the
- corresponding controller
for example, change {{view ... }}
helper use {{render}}
instead:
{{render "player"}}
this find playerview
, playercontroller
, use them, similar route, without actual routing part.
Comments
Post a Comment