模型中的值未更新到视图
values from model are not updating to the view
我使用 Ember.View 显示了一个文本框。
在模型中,我指定了输入的所有细节。
App.Display = DS.Model.extend({
inputText: DS.attr('string'),
width: DS.attr('string'),
height: DS.attr('string'),
className: DS.attr('string')
})
App.Display.FIXTURES = [{
id: '1',
innnerText : 'helo',
width: '197px',
height: '25px',
className: 'DisplayClass'
}]
我如何从模型中将类名、宽度、高度和内部文本附加到显示单元。
这是我的 displayView
<script type="text/x-handlebars" data-template-name="_display">
{{#view 'App.DisplayView'}}{{/view}}
</script>
App.DisplayView = Ember.View.extend({
tagName: 'input',
});
App.DisplayController = Ember.ArrayController.extend({
actions: {
}
});
如何通过控制器将模型数据(即 innerText、维度、类名)填充到视图。
Note:Im 未使用任何 this.resource('somename')
在 IndexRoute 中我设置了控制器
setupController: function (controller, model) {
controller.set('model', model);
this.controllerFor('Display').set('model', model.displayInput);
在索引路由中
App.IndexRoute = Ember.Route.extend({
model: function(){
return {
//findall of model name
displayInput : this.store.findAll('display')
}
}
现在使用模型设置和获取输入值
Working demo on JS Bin. 您正在使用视图(现在已弃用的功能)而不是组件,这使得代码看起来不太好,并且它不是实现您想要的行为的理想工具。相反,我将您的方法转换为使用组件。此外,在 Fixtures 中,您定义了 innnerText
而不是 inputText
.
那么,让我们从组件开始吧。代码:
App.DisplayComponentComponent = Ember.Component.extend({
tagName: 'input',
attributeBindings: ['style', 'value'],
style: Ember.computed('model', 'model.{width,height}', function() {
var ret = '',
width = this.get('model.width'),
height = this.get('model.height');
if (width) {
ret += 'width: ' + width + ';';
}
if (height) {
ret += 'height: ' + height + ';';
}
return ret;
})
});
组件模板:
<script type="text/x-handlebars" data-template-name="display-component">
</script>
然后,正确的灯具:
App.Display.FIXTURES = [{
id: '1',
inputText : 'helo',
width: '197px',
height: '25px',
className: 'DisplayClass'
}];
您的 model
也有问题。我认为仅在 setupController
模型中为显示控制器初始化模型会更容易。
setupController: function (controller, model) {
controller.set('model', model);
this.store.findAll('display').then(function(displays) {
this.controllerFor('display').set('model', display.get('firstObject'));
});
}
然后,如果你想使用它,就那样做(我正在使用你的示例和 _display
模板,但我不知道你如何使用它):
<script type="text/x-handlebars" data-template-name="_display">
{{display-component model=model class=model.className value=model.inputText}}
</script>
我必须假定 _display
模板是用于显示控制器的,因为你的问题根本不清楚。
我使用 Ember.View 显示了一个文本框。 在模型中,我指定了输入的所有细节。
App.Display = DS.Model.extend({
inputText: DS.attr('string'),
width: DS.attr('string'),
height: DS.attr('string'),
className: DS.attr('string')
})
App.Display.FIXTURES = [{
id: '1',
innnerText : 'helo',
width: '197px',
height: '25px',
className: 'DisplayClass'
}]
我如何从模型中将类名、宽度、高度和内部文本附加到显示单元。
这是我的 displayView
<script type="text/x-handlebars" data-template-name="_display">
{{#view 'App.DisplayView'}}{{/view}}
</script>
App.DisplayView = Ember.View.extend({
tagName: 'input',
});
App.DisplayController = Ember.ArrayController.extend({
actions: {
}
});
如何通过控制器将模型数据(即 innerText、维度、类名)填充到视图。 Note:Im 未使用任何 this.resource('somename')
在 IndexRoute 中我设置了控制器
setupController: function (controller, model) {
controller.set('model', model);
this.controllerFor('Display').set('model', model.displayInput);
在索引路由中
App.IndexRoute = Ember.Route.extend({
model: function(){
return {
//findall of model name
displayInput : this.store.findAll('display')
}
}
现在使用模型设置和获取输入值
Working demo on JS Bin. 您正在使用视图(现在已弃用的功能)而不是组件,这使得代码看起来不太好,并且它不是实现您想要的行为的理想工具。相反,我将您的方法转换为使用组件。此外,在 Fixtures 中,您定义了 innnerText
而不是 inputText
.
那么,让我们从组件开始吧。代码:
App.DisplayComponentComponent = Ember.Component.extend({
tagName: 'input',
attributeBindings: ['style', 'value'],
style: Ember.computed('model', 'model.{width,height}', function() {
var ret = '',
width = this.get('model.width'),
height = this.get('model.height');
if (width) {
ret += 'width: ' + width + ';';
}
if (height) {
ret += 'height: ' + height + ';';
}
return ret;
})
});
组件模板:
<script type="text/x-handlebars" data-template-name="display-component">
</script>
然后,正确的灯具:
App.Display.FIXTURES = [{
id: '1',
inputText : 'helo',
width: '197px',
height: '25px',
className: 'DisplayClass'
}];
您的 model
也有问题。我认为仅在 setupController
模型中为显示控制器初始化模型会更容易。
setupController: function (controller, model) {
controller.set('model', model);
this.store.findAll('display').then(function(displays) {
this.controllerFor('display').set('model', display.get('firstObject'));
});
}
然后,如果你想使用它,就那样做(我正在使用你的示例和 _display
模板,但我不知道你如何使用它):
<script type="text/x-handlebars" data-template-name="_display">
{{display-component model=model class=model.className value=model.inputText}}
</script>
我必须假定 _display
模板是用于显示控制器的,因为你的问题根本不清楚。