2013-04-07 70 views
0

使用值從模型實例我想在我的模板使用的值從我的模型實例,在PHP中我會通過執行以下去:ember.js模板

<?php 
class User { 
    private $name; 
    public function __construct($name) { 
     $this->name = $name; 
    } 

    public function getName() { 
     return $this->name; 
    } 
} 

$localuser = new User("john doe"); 
?> 

<p>My name is: <?= $localuser->getName(); ?></p> 

但是我怎麼做到這一點在Ember.js?或者我誤解了Ember.js的MVC模型?

這是創建localuser比如我Ember.js代碼:

Example = Ember.Application.create(); 
Example.User = Example.Object.extend({ 
    firstname: null, 
    lastname: null, 
    network: null, 

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

}); 

Example.LocalUser = Example.User.create({ 
    firstname: "John", 
    lastname: "Doe" 
}); 

Example.IndexRoute = Ember.Route.extend({ 
    setupController: function(controller) { 
    }, 

    renderTemplate: function() { 
     this.render("exampleTemplate"); 
    } 
}); 

and my HTML template (which doesn't work): 

<script type="text/x-handlebars" data-template-name="exampleTemplate"> 
{{#model Example.LocalUser}} 
    {{fullName}} 
{{/model}} 
</script> 

什麼我需要把我的模板,得到Example.LocalUser全名稱值顯示?

回答

1

你必須做幾乎完全相同的PHP:創建一個對象的實例。你幾乎是正確的,有一些錯誤:

  1. 雖然你的確在創建一個實例說Example.LocalUser = Example.User.create({...}),這是一個在Ember中的反模式。約定是在應用程序名稱空間上保留類別,如Example.IndexRoute,Example.User等。但從不實例。模型對象是實例,將它們展示給視圖的最佳方法是使用modelsetupController鉤子設置控制器。
  2. 據我所知,沒有{{#model}}...{{/model}}把手幫手。你可以使用控制器提供的變量:{{model}}或者只是{{controller}},如果你設置它,例如。在控制器的路線中。
  3. 您的例子錯別字:firstname - >firstName :)

通過上面給出的(大概)工作的例子應該是這樣的:

的JavaScript:

Example = Ember.Application.create(); 

Example.User = Ember.Object.extend({ 
    firstName: null, 
    lastName: null, 
    network: null, 

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


Example.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    var user = Example.User.create({ 
     firstName: "John", 
     lastName: "Doe" 
    }); 

    return user; 
    }, 

    renderTemplate: function() { 
    this.render("exampleTemplate"); 
    } 
}); 

模板:

<script type="text/x-handlebars" data-template-name="exampleTemplate"> 
    {{model.fullName}} - {{controller.fullName}} 
</script> 

輸出:

李四 - 李四

+0

但如果我想創建示範用戶的多個實例,爲讓說一個聊天應用程序是什麼? – xorinzor 2013-04-07 21:23:27

+0

然後,您從'model'鉤子返回一個*數組*,並使用模板中的{{#each}} Handlebars helper遍歷它們。 – zeppelin 2013-04-07 22:15:38