2013-10-16 127 views
1

在ember.js文件我已经找到了下一个:Ember.js和选择多个模型删除

控制器,让你与显示逻辑装点您的模型。在一般情况下,您的模型将被保存到服务器的属性,而控制器将有你的应用程序并不需要保存到服务器的性能。

我尝试添加“选择”功能,我的应用程序。

这里是的jsfiddle:http://jsfiddle.net/JWf7X/

似乎滤波器特性由模型滤波,而不是由控制器(因为执行console.log为空)。

this.filterProperty('isSelected', true); //managing models 

如何正确写入removeSelected动作?

是正确的方式在控制器存储“isSelected”?我想加入isSelected的模型是不正确的做法,因为这个属性不会从服务器通过REST API加载并不会被保存到它。

的application.js:

window.App = Ember.Application.create(); 
App.ApplicationAdapter = DS.FixtureAdapter.extend(); 



App.Test = DS.Model.extend({ 
    title: DS.attr('string'), 
}); 


App.Test.FIXTURES = [ 
{ 
    id: 1, 
    title: 'Learn Ember.js', 
}, 
{ 
    id: 2, 
    title: '...', 
}, 
{ 
    id: 3, 
    title: 'Profit!', 
} 
]; 

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return this.get('store').find('test'); 
    } 
}); 

App.IndexController = Ember.ArrayController.extend({ 
    actions: { 
     removeSelected: function() { 
     var selected = this.filterProperty('isSelected', true); 
     console.log(selected); 
     } 
    }, 

}); 

App.TestController = Ember.ObjectController.extend({ 
    isSelected: false, 
}); 

的index.html:

<script type="text/x-handlebars" data-template-name="index"> 
    <button {{action "removeSelected"}}>remove selected</button> 
    <ul> 
     {{#each itemController="test"}} 
     <li> 
      {{input type="checkbox" checked=isSelected}} 
      <label>{{title}}</label> 
     </li> 
     {{/each}} 
    </ul> 
</script> 

回答

1

寻找源,使用itemController,在每个视图帮手。将创建一个新的阵列控制器,而不是使用IndexController。所以isSelected不会出现的IndexController内。

如果设置了itemControllerApp.IndexController你会得到这个工作:

indexController的:

App.IndexController = Ember.ArrayController.extend({ 
    itemController: "test", 
    actions: { 
     removeSelected: function() { 
     var selected = this.filterProperty('isSelected', true); 
     console.log(selected); 
     } 
    } 
}); 

的index.html:

<script type="text/x-handlebars" data-template-name="index"> 
    <button {{action "removeSelected"}}>remove selected</button> 
    <ul> 
     {{#each}} 
     <li> 
      {{input type="checkbox" checked=isSelected}} 
      <label>{{title}}</label> 
     </li> 
     {{/each}} 
    </ul> 
</script> 

这是一个更新的小提琴与此工作http://jsfiddle.net/marciojunior/BKUyk/

+0

日Thnx的帮助。我错误地认为在每个助手中设置itemController会将其设置为IndexController。 –

+0

不客气。只是在我的答案更新,'每个itemController =“测试”'是不需要'每个'。小提琴是正确的。 –