Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ember.js在每个帮助程序中使用itemController无法按预期工作_Javascript_Ember.js_Handlebars.js - Fatal编程技术网

Javascript ember.js在每个帮助程序中使用itemController无法按预期工作

Javascript ember.js在每个帮助程序中使用itemController无法按预期工作,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,我应该如何更改以下代码以使其按预期工作,这样,如果我完成了一个TODO,就不会更改其他TODO的完整性 itemController=“todo”声称将每个项目包装在自己的控制器中,但未能这样做 index.html <script type="text/x-handlebars" id="todos"> <ul> {{#each controller itemController="todo"}} <li>{{

我应该如何更改以下代码以使其按预期工作,这样,如果我完成了一个TODO,就不会更改其他TODO的完整性

itemController=“todo”声称将每个项目包装在自己的控制器中,但未能这样做

index.html

    <script type="text/x-handlebars" id="todos">
    <ul>
        {{#each controller itemController="todo"}}
        <li>{{#link-to 'todo' this}}{{job}} -- {{#if isCompleted}}Completed{{else}}Incomplete{{/if}}{{/link-to}}</li>
        {{/each}}
    </ul>
    {{outlet}}
</script>
<script type="text/x-handlebars" id="todo">
    <p>Job: {{job}} -- {{#if isCompleted}}Completed{{else}}Incomplete{{/if}}</p>
    <button {{action 'complete' controller}}>Complete</button>
</script>

我相信你是在混淆视听

1您在App.TodosRoute中有一个TODO列表,每个TODO都由自己的控制器支持,但在App.TodoRoute中,您有另一个todoController实例,因为该属性位于控制器级别,因此您正在查看为控制器的第四个实例设置的属性,该实例负责TodoRoute,即单实例

您可以将属性移动到模型中,一切都会顺利进行

App.TodoController = Ember.ObjectController.extend({

    actions: {
        complete: function() {
            this.set('isCompleted',true);
        }
    }
});

var todos = [{id: '1', job: 'running',isCompleted: false}, {id: '2', job: 'swimming',isCompleted: false}, {id: '3', job: 'study',isCompleted: false}];

谢谢,把它弄清楚了。这意味着我不能使用这样的控制器属性?在我的场景中添加属性看起来不合逻辑。将坚持将其添加到模型tho。
App.TodoController = Ember.ObjectController.extend({

    actions: {
        complete: function() {
            this.set('isCompleted',true);
        }
    }
});

var todos = [{id: '1', job: 'running',isCompleted: false}, {id: '2', job: 'swimming',isCompleted: false}, {id: '3', job: 'study',isCompleted: false}];