나는 Durandal과 Knockout을 사용하여 건물을 짓고있는 응용 프로그램을 가지고 있으며 내 SPA에서 페이지 중 하나에 듀란 댈 탐색을 사용할 때 문제가있는 것으로 보입니다. 홈 화면에서 응용 프로그램을로드하고 일련의 계단식 드롭 다운이있는 두 번째 페이지로 이동하면 바인딩이 끊기는 것처럼 보입니다. 페이지를 새로 고치고 바인딩으로 시작하는 두 번째 페이지를로드하면 모두 예상대로 작동하는 것 같습니다. 첫 번째 페이지에는 현재 제목 외에는 아무 것도없고 두 번째 페이지에는 계단식 드롭 다운이 있습니다. 솔직히이 질문에 어떤 코드를 포함 시킬지 모르겠다. 사람들이보고 싶은 것이 있으면 언제든지 물어보십시오. '녹아웃 컨텍스트'Chrome 플러그인을 사용하여 녹아웃 컨텍스트를 엿보는 중입니다. 결과가 표시되지 않는다는 점을 제외하면 모든 것이 작동하는 것처럼 보입니다.Durandal이 녹아웃 바인딩을 방해합니까?
더 간단보기 모델 데 문제
define(['services/logger',
"services/datacontext"],
function (logger, datacontext) {
var manufacturers = ko.observableArray();
var manufacturer = ko.observable();
var isSaving = ko.observable(false);
var modelsWithSizes = ko.observableArray();
manufacturer.subscribe(function (newValue) {
datacontext.getBikeModelsWithSizes(modelsWithSizes, newValue.manufacturerID());
});
var hasChanges = ko.computed(function() {
return datacontext.hasChanges();
});
var cancel = function() {
datacontext.cancelChanges();
};
var canSave = ko.computed(function() {
return hasChanges() && !isSaving();
});
var save = function() {
isSaving(true);
return datacontext.saveChanges().fin(complete);
function complete() {
isSaving(false);
}
};
var canDeactivate = function() {
if (hasChanges()) {
var title = 'Do you want to leave ?';
var msg = 'Navigate away and cancel your changes?';
var checkAnswer = function (selectedOption) {
if (selectedOption === 'Yes') {
cancel();
}
return selectedOption;
};
return app.showMessage(title, msg, ['Yes', 'No'])
.then(checkAnswer);
}
return true;
};
var vm = {
activate: activate,
cancel: cancel,
canDeactivate: canDeactivate,
canSave: canSave,
hasChanges: hasChanges,
manu: manufacturer,
manufacturers: manufacturers,
modelsWithSizes: modelsWithSizes,
save: save
};
return vm;
//#region Internal Methods
function activate() {
manufacturers(datacontext.lookups.manufacturers),
logger.log('Frames View Activated', null, 'frames', false);
return true;
}
//#endregion
});
DataContext를 호출 datacontext.lookups.manufacturers가 사전로드 된 observableArray 인 경우
datacontext.lookups = {
manufacturers: function()
{ return getLocal('Manufacturers', 'name', true); }
};
당신은 '페이지'Viewmodels 모듈과 같은 몇 가지 코드를 포함해야합니다, 나는 문제를 갖는 viewmodels의 더 간단한을 추가 한 것을 당신의 활성화 기능 – 7zark7
를 호출합니다. activate 함수를 호출하는 것을 참조 할 때 router.map 호출로 shell.js에 대해 이야기하고 있습니까? – PlTaylor
"datacontext.lookups.manufacturers"가 ajax 또는 비동기 호출인지 궁금합니다. 그렇다면 활성화 된 통화에서 약속을 되 찾을 것으로 예상 될 때 저의 트로피가 날 것입니다. – 7zark7