ここで何か根本的に間違っているのではないかと思いますが、モデルにスタイル属性をビューで定義させようとしています。たとえば、ember ビューは card テンプレートを使用し<div style="color: green">...</div>
、モデル プロパティ color に裏打ちされたものから始めます。テンプレートを介して別の場所に変更するとApp.Card.find(2).set("color", "color: red").save()
、テンプレートが値を更新することを期待していますが、何もしません。テンプレートで直接使用{{ bindAttr style model.color }}
すると値が同期されますが、追加の ember-view div 要素があります。
JavaScript:
App = Ember.Application.create();
App.Store = DS.Store.extend({
adapter: 'DS.FixtureAdapter'
});
App.Router.map(function () {
// put your routes here
});
App.IndexRoute = Ember.Route.extend({
model: function () {
return App.Card.find()
}
});
App.Card = DS.Model.extend({
color: DS.attr('string'),
});
App.Card.FIXTURES = [{
id: 1,
color: "color: green"
}, {
id: 2,
color: "color: blue"
}];
App.CardView = Ember.View.extend({
templateName: "card",
attributeBindings: ['style'],
style: function () {
return this.get('controller.model.color')
}.property('controller.model'),
didInsertElement: function () {
App.Card.find(2).set('color', "color: red").save()
console.log(App.Card.find(2).get('color'))
}
});
テンプレート:
<script type="text/x-handlebars" data-template-name="card">
<h1> HELLO THERE </h1>
</script>
<script type="text/x-handlebars">
<h2> Welcome to Ember.js </h2>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
{{#each item in model}}
{{render "card" item}}
{{/each}}
</script>