2 개의 뷰 모델과 requirejs를 결합하여 모든 것을 결합한 간단한 응용 프로그램을 만들었습니다. 이제는 내 중첩 된 뷰 모델의 여러 버전을 가져야한다고 들었습니다. 그래서 배열을 추가하고 첫 번째 항목은 괜찮지 만 하위 항목을 추가하는 방법을 잘 모르겠습니다.내 배열에 새로운 빈 객체를 얻는 방법
다른 사용자가 다른 사용자를 추가 할 것인지 묻는 메시지가 표시되면 people
배열의 새로운 person
개체를 사용하여이 페이지로 다시 이동해야합니다. 내가 requirejs people.push(person)
에서 제공하는 객체를 사용하는 경우
- 은, 난 그냥 배열
people.push({})
에 새 개체를 추가하면 하나 - , 그때 내 녹아웃 바인딩이 새로운 작동하지 않는보다는 기존 버전을 다시 얻을 그들은 존재하지 않는 가치를 찾고 있기 때문입니다.
어떻게 people
으로 person
"새로운"을받을 수 있나요? 여기
내보기 모델과 뷰는
,자료
define(['viewmodel/person'], function (person) {
var vm = {
people: [],
peopleIndex: 0,
currentPerson: currentPerson,
};
return vm;
//#region Internal Methods
function currentPerson() {
return vm.people[vm.peopleIndex]
}
})
공통 아이
define(['services/logger', ], function (logger) {
var person = {
title: "",
firstName: "",
lastName: "",
};
return person;
})
보기
<section>
<h2 class="page-title" data-bind="text: title"></h2>
<label for="firstName">Title</label><input type="text" name="firstName" data-bind="value: currentPerson().title" />
<label for="firstName">Fisrt Name</label><input type="text" name="firstName" data-bind="value: currentPerson().fistName" />
<label for="firstName">Last Name</label><input type="text" name="firstName" data-bind="value: currentPerson().lastName" />
</section>
감사를 사용하지 않는 것이 좋습니다 코드에 중복을 소개합니다, 그게 내가 없어진 것입니다 . 내가 한쪽 데이터 바인딩 만 필요하다고 생각한 것처럼 뷰 모델 속성을 관찰 할 수 없었지만 이제는 녹아웃과 같은 새로운 컨텍스트로 페이지를 다시 방문하여 바인딩 결과 캐싱을 수행 할 수 있습니다. * 다시 문서를 읽기 시작합니다. * – squig