canjs에서 목록 변경을 감지하고보기를 다시 그리는 방법이 있습니까? 목록을 변경하려고하지만 화면에 표시되지 않습니다. 순간
제가 보기 모델을 가지고Canjs changed events
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" />
당신이, 당신이에서 원시 문자열 값을 취할 범위에 "페이지"를 정의되지 않은 바이올린에 표시하고있는 경우 코드 http://git.io/vrPCTQ
코드를 좀 더 형식화 할 수 있습니까? CanJS는 실시간 바인딩을 사용하며 자동으로 변경됩니다. 다른 질문에 대한 피델을 만든 것과 비슷한 문제를 보여주는 피들을 만들 수 있습니까? –
http://jsfiddle.net/tkd9Lvtm/2/ tagFiltered를 사용하여 목록을 필터링하고 있습니다. 그것은 todos를 필터하지만 화면에 표시되지 않습니다. 덕분에 –