有沒有辦法檢測canjs中的列表更改並使視圖重繪?我正在更改列表,但這不會顯示在屏幕上。
目前我有視圖模型Canjs改變了事件
TodosListViewModel = can.Map.extend({
todoCreated: function(context, element) {
// new todo is created
var Todo = this.Todo;
new Todo({
name: can.trim(element.val())
}).save();
element.val("");
},
tagFiltered: function(context, element) {
// filter todos according to tag
this.todos = this.todos.filter(function(todo) {
return todo.tag === element.val();
});
}
});
和組分
can.Component.extend({
// todos-list component
// lists todos
tag: "todos-list",
template: can.view("javascript_view/todos-list"),
scope: function() {
// make the scope for this component
return new TodosListViewModel({
todos: new TodoList({}),
Todo: Todo
});
},
events: {
"{scope.Todo} created": function(Todo, event, newTodo) {
// todo created
this.scope.attr("todos").push(newTodo);
},
"{scope.todos} changed": function(a,b,c,d,e,f,g,h) {
console.log("todo change",d,e);
}
}
});
的標記
<input type="text" name="tagFilter" placeholder="Tag lookup" can-enter="tagFiltered" />
你能更好地格式化你的代碼嗎? CanJS具有實時綁定功能,並會自動更改。你可以創建一個小提琴,演示類似於我爲另一個問題創建小提琴的問題嗎? – 2014-10-08 03:04:56
http://jsfiddle.net/tkd9Lvtm/2/我使用tagFiltered來過濾列表。它過濾todos,但不顯示在屏幕上。 – 2014-10-08 10:37:07