2012-06-04 4 views
4

내 아이템 Observable-Array에 이벤트를로드 할 때 문제가 있습니다.Knockout.js : observable-array에 요소 추가

ViewModel = (function() { 
    var 
     items = ko.observableArray([]), 

     removeItems = function (element) { 
      items.remove(element); 
     }, 
     saveAll = function() { 
      return ko.toJS(items); 
     }, 
     addItem = function (element) { 
      items.push(element); 
      return false; // no Page-Reload after button-klick 
     }; 

    return { 
     Items: items, 
     // i call addItem with a dummy object (for testing) 
     clickSave: addItem(new Customer(1, "Tfsd", "Tfsd")) 
    }; 
})(); 

(fiddle)

addItem를 기능이 버튼을 클릭도하지 않고,라고 왜

? 함수의 끝에서() 때문에 그것입니까?

addItem = function (element) { 
     items.push(element); 
     return false; // no Page-Reload after button-click 
    }; 

이벤트에만 사용하려면 어떻게해야합니까? 아니면 다른 곳에서 내 문제입니까?

답변

3

사용

return { 
    Items: items, 
    clickSave: addItem 
}; 
0

왜 버튼을 클릭하지 않고 addItem 함수가 호출 되었습니까? 함수의 끝에서() 때문에 그것입니까?

예.

대신이 작업을 수행 :

return { 
    Items: items, 
    clickSave: function() { 
     addItem(
      new Customer( 
       items().length + 1, // or whatever you use to determine new IDs 
       $("#inputVorname").val(), 
       $("#inputNachname").val() 
      ) 
     ); 
    } 
}; 
0

새 항목이 항상 같은 생성하려는 경우에이 작업을해야합니다.

return { 
    Items: items, 
    clickSave: addItem.bind(null, new Customer(1, "Tfsd", "Tfsd")) 
};