Javascript 余烬。选择查看已传递的值
我有一个Ember.js 1.0.0应用程序,我正在尝试为其实现内置的Ember。选择view 此应用程序显示了三个任务列表:inProgress、completed和unassigned。用户可以筛选相应项目显示的任务。这就是余烬。选择视图的位置。但是,当我加载路线时,余烬会对我发出关于我给它的值类型的吠声: 断言失败:每个循环所覆盖的值必须是数组。你通过了项目,好吗 未捕获的TypeError:对象项目.all没有方法“addArrayObserver” 未捕获错误:您所做的操作导致视图在渲染后但在插入DOM之前重新渲染 我花了好几个小时来努力解决这个问题,尝试了下面代码的不同排列方式——我知道我肯定遗漏了一些明显的东西,因为要让这么简单的组件正常工作不会这么难。希望你们能给我指出正确的方向 这是我的路线:Javascript 余烬。选择查看已传递的值,javascript,ember.js,coffeescript,Javascript,Ember.js,Coffeescript,我有一个Ember.js 1.0.0应用程序,我正在尝试为其实现内置的Ember。选择view 此应用程序显示了三个任务列表:inProgress、completed和unassigned。用户可以筛选相应项目显示的任务。这就是余烬。选择视图的位置。但是,当我加载路线时,余烬会对我发出关于我给它的值类型的吠声: 断言失败:每个循环所覆盖的值必须是数组。你通过了项目,好吗 未捕获的TypeError:对象项目.all没有方法“addArrayObserver” 未捕获错误:您所做的操作导致视图在渲
Bee.TasksIndexRoute = Bee.Auth.Route.extend
setupController: (ctrl) ->
# get tasks
Bee.Auth.send
url: Bee.endpoint "/tasks"
.done (tasks) ->
ctrl.set "tasks.all", tasks
# get projects
Bee.Auth.send
url: Bee.endpoint "/projects"
.done (projects) ->
ctrl.set "projects.owned", projects.owned
ctrl.set "projects.participating", projects.participating
ctrl.set "projects.all", projects.owned.concat projects.participating
这是我的控制器:
Bee.TasksIndexController = Ember.ObjectController.extend
project: null
content:
tasks:
all: []
inProgress: []
completed: []
unassgined: []
projects:
all: []
owned: []
participating: []
visible: (->
ctrl = @
# filter tasks here
).property "project"
这是我的模板:
<script type="text/x-handlebars" id="tasks/index">
<div class="center-pane">
<div class="top_options">
<div class="project_filter">
<strong>Viewing: </strong>
{{view Ember.Select
content=projects.all
optionValuePath='content._id'
optionLabelPath='content.title'
value=project
prompt='All Tasks'
}}
</div>
<strong class="gold-gradient option_button">
{{#link-to 'tasks.create' classNames='new_task'}}Create Task{{/link-to}}
</strong>
</div>
<div class="col3">
<div class="col-header in-progress light-gradient">
<h3>In Progress</h3>
</div>
<div id="tasks_active_list">
{{#if visible.inProgress.length}}
<ul>{{#each visible.inProgress}}{{view Bee.TaskListView}}{{/each}}</ul>
{{else}}
<p class="no_projects">None</p>
{{/if}}
</div>
</div>
<div class="col3">
<div class="col-header completed light-gradient">
<h3>Completed</h3>
</div>
<div id="tasks_closed_list">
{{#if visible.completed.length}}
<ul>{{#each visible.completed}}{{view Bee.TaskListView}}{{/each}}</ul>
{{else}}
<p class="no_projects">None</p>
{{/if}}
</div>
</div>
<div class="col3">
<div class="col-header unassigned light-gradient">
<h3>Unassigned</h3>
</div>
<div id="tasks_unassigned_list">
{{#if visible.unassigned.length}}
<ul>{{#each visible.unassigned}}{{view Bee.TaskListView}}{{/each}}</ul>
{{else}}
<p class="no_projects">None</p>
{{/if}}
</div>
</div>
</div>
</script>
。。。它呈现良好-但是我需要使用余烬。选择此选项,以便我可以将该值绑定到TasksIndexController上的project属性-因为我将使用该值作为触发可见函数的可观察值。尝试预先将projects.all设置为null。可能ember select与类上的pojo默认数组有问题
Bee.TasksIndexController = Ember.ObjectController.extend
project: null
content:
tasks:
all: []
inProgress: []
completed: []
unassgined: []
projects:
all: null
owned: []
participating: []
visible: (->
ctrl = @
# filter tasks here
).property "project"
setupController: (ctrl) ->
# get tasks
Bee.Auth.send
url: Bee.endpoint "/tasks"
.done (tasks) ->
ctrl.set "tasks.all", tasks
# get projects
Bee.Auth.send
url: Bee.endpoint "/projects"
.done (projects) ->
ctrl.set "projects.owned", projects.owned
ctrl.set "projects.participating", projects.participating
ctrl.set "projects.all", projects.owned.concat projects.participating
下面是一个简化的示例:尝试预先将projects.all设置为null。可能ember select与类上的pojo默认数组有问题
Bee.TasksIndexController = Ember.ObjectController.extend
project: null
content:
tasks:
all: []
inProgress: []
completed: []
unassgined: []
projects:
all: null
owned: []
participating: []
visible: (->
ctrl = @
# filter tasks here
).property "project"
setupController: (ctrl) ->
# get tasks
Bee.Auth.send
url: Bee.endpoint "/tasks"
.done (tasks) ->
ctrl.set "tasks.all", tasks
# get projects
Bee.Auth.send
url: Bee.endpoint "/projects"
.done (projects) ->
ctrl.set "projects.owned", projects.owned
ctrl.set "projects.participating", projects.participating
ctrl.set "projects.all", projects.owned.concat projects.participating
这里有一个简化的示例:从[]更改为null似乎没有什么不同,但是在查看JSBin示例后,我发现它使用的是Ember 1.1.1-因此我将我的1.0.0版本更新为最新的1.1.2,一切都按照我的预期运行。多痛苦啊!谢谢你的间接回答!谢谢@sp0rkyd0rky!这简直快把我逼疯了!我最初是从1.1.1开始的,但有一段时间我使用金丝雀构建来测试一些特性。我最近回到了1.1.1,发现了这个错误。从[]改为null似乎没有什么区别,但是在查看JSBin示例后,我发现它使用的是Ember 1.1.1-因此我将我的1.0.0版本更新为最新的1.1.2,一切都按照我的预期运行。多痛苦啊!谢谢你的间接回答!谢谢@sp0rkyd0rky!这简直快把我逼疯了!我最初是从1.1.1开始的,但有一段时间我使用金丝雀构建来测试一些特性。我最近回到了1.1.1,并得到了这个错误。