私はデュランダルフレームワークを使用しようとしてきましたが、非常に満足していると言わなければなりません。http://stephenwalther.com/のMovieチュートリアルを使用していて、いくつかの変更を加えました。RyanKeetersYoutubeビデオの助けを借りて。モーダルで映画を編集しました。
しかし、モーダルを介して新しい映画を追加するためにそれを機能させることはできません。
add.htmlとadd.jsを作成しましたが、新しいムービーを作成するためのリンクをクリックしてモーダルに表示すると、中央にあるページが表示されます(さらにクリックするとループのようになります)。
これはshow.htmlの私のバインディングです:
<a data-bind="click: viewAddMovieModal">Add Movie</a>
そしてこれはjavascriptです:
define(function (require) {
var self = this;
var vm = {
activate: activate,
title: 'movies page',
movies: ko.observableArray([])
};
//return vm;
// self.moviesRepository = require("repositories/moviesRepository");
self.router = require('durandal/plugins/router');
self.system = require('durandal/system');
self.app = require('durandal/app');
self.movie = require('viewmodels/movie');
self.addmovie = require('viewmodels/add');
//self.Movies = ko.observableArray([]);
self.viewMovieModal = function (movie, element) {
self.app.showModal(movie).then(function (result) {
if (result) {
//self.app.showMessage(result.toString(), result.toString());
vm.movies.remove(movie);
}
}).fail(function (result) {
self.app.showMessage(result.toString(), "Something went wrong!");
});
};
self.viewAddMovieModal = function (addmovie,element) {
// self.app.showModal(addmovie).then(function (result) {
// self.app.showMessage(result.toString(), result.toString());
// });
self.app.showModal(null, element, addmovie);
};
init();
function init() {
vm.movies.push(new movie("Star wars", "Piet"));
vm.movies.push(new movie("Harry Potter", "Jan"));
vm.movies.push(new movie("Hangover", "Klaas"));
}
function activate() {
self.system.log("I get in the activate function!");
}
return {
activate: activate,
movie: movie,
addmovie:addmovie,
vm:vm,
viewMovieModal: viewMovieModal
};
});