首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组呈现项

从数组呈现项
EN

Stack Overflow用户
提问于 2013-10-31 16:04:43
回答 1查看 428关注 0票数 0

我很困惑。我有下面的模型,对attr标签和固定装置的转换:

代码语言:javascript
复制
Tracker.Story = DS.Model.extend({
    title: DS.attr('string'),
    tags: DS.attr('array', []),
});

DS.ArrayTransform = DS.Transform.extend({
 deserialize: function(serialized) {
  return serialized;
 },
 serialize: function(deserialized) {
   return deserialized.split(',');
 }
});

Tracker.register("transform:array", DS.ArrayTransform);

Tracker.Story.FIXTURES = [
{
    id: 1,
    title: "Some story",
    tags: ["tag1", "tag2", "tag3"],
}

和模板

代码语言:javascript
复制
{{#each itemController="story"}}
  {{title}}
  {{#each tag in tags}}
      {{tag}}
  {{/each}}
{{/each}}

它对固定装置的故事很有用。我通过接口添加了新的故事,其中输入字段定义为:

代码语言:javascript
复制
{{input type="text" value=tags}}

正确转换并从字符串返回数组(例如,从"1,2,3“返回数组)。

但是,添加了带有下一条消息的故事的渲染标记失败了:

断言失败:#每个循环都必须是一个数组的值。你通过了1 ember.js:417

不明TypeError:对象1没有方法'addArrayObserver‘ember.js:22976

隐藏错误:您所做的事情导致视图在呈现后但在插入到DOM之前重新呈现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-31 16:27:46

输入助手不支持将项保存为数组。它在输入字段中正确显示的原因是因为在对象上调用了toString,数组的toString是1、2、3等等.当您更改输入字段时,它正在释放底层数组,并将其保存为字符串1、2、3。

转换只在加载/保存模型时执行,而不是在底层模型的每个get/set上执行。

最好的选择是将输入字段与另一个属性关联起来,并且随着该字段的更改,您将使用数组更新基础字段。

像这样的东西会有用的:

http://emberjs.jsbin.com/EMapanu/3/edit

代码语言:javascript
复制
App.IndexRoute = Ember.Route.extend({
  model: function() {
    return ['red', 'yellow', 'blue'];
  },
  setupController: function(controller, model){
    this._super(controller, model);
    controller.set('fakeModel', model);
  }
});

App.IndexController = Em.ArrayController.extend({

  modelUpdater: function(){
    var fm = this.get('fakeModel');
    if(!(fm instanceof Array)){
      fm = (this.get('fakeModel') || "").split(',');
    }
    this.set('model', fm);
  }.observes('fakeModel')
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19711423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档