「knockout.jsで親ウィンドウに値を渡す」の親ウィンドウ側:子で追加ボタンが押されたとき表示

品名金額ボタン

できれば…確定ボタンを押さずに即反映ってしたい。他のライブラリをひっぱってくればできそうだけど面倒そうなので挫折。


ちなみに子ウィンドウのHTMLソースは下記。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>knockout.jsで親ウィンドウに値を渡す:子ウィンドウ</title>
<script type="text/javascript" src="jquery-1.5.1.min.js"></script>
<script type="text/javascript" src="knockout-2.1.0beta.js"></script>

<script type="text/javascript">
	$(document).ready(function () {
		ko.applyBindings(new ViewModelChild());
	});

	function ViewModelChild() {
		var self = this;

		self.clearBtn = ko.observable(false);

		self.tasteAry = ko.observableArray([
			{tasteData: 'たれ'}, {tasteData: '塩'}, {tasteData: '味噌'}, {tasteData: '芥子'},
		]);

		// 追加ボタンが押されたとき
		self.addTaste = function(data) {
			source = "";
			source += '<div style="font-weight:bold;padding:3px; border:1px dotted #ccc;background:#f6f6f6;">';
			source += data.tasteData;
			source += '</div>';
			window.opener.$(".checkDiv").css("display", "block");
			window.opener.$(".checkDiv").html(source);
			window.opener.$(".checkBtnArea").css("display", "block");
			
			// クリアボタンを表示
			self.clearBtn(true);
		};
		
		// クリアボタンが押されたとき
		self.clearTaste = function(data) {
			source = "";
			window.opener.$(".checkDiv").html(source);
			window.opener.$(".checkDiv").css("display", "none");
			window.opener.$(".checkBtnArea").css("display", "none");
			
			// クリアボタンを非表示
			self.clearBtn(false);
		};
	}
</script>

</head>
<body>
<h1>「knockout.jsで親ウィンドウに値を渡す」の子ウィンドウ側</h1>
<div>
	<div data-bind="visible: clearBtn" style="border:1px solid #ccc;text-align:center;padding:8px 0;">
	<button data-bind="click: $root.clearTaste">追加したものをクリア</buuton><br />
	</div>
	<table data-bind="visible: tasteAry">
		<thead><tr><th>味</th><th>追加</th></thead>
		<tbody data-bind="foreach: tasteAry">
			<tr>
				<td><button data-bind="click: $root.addTaste">追加</button></td>
				<td data-bind="text: tasteData"></td>
			</tr>
		</tbody>
	</table>
</div>
</body>
</html>
PCスキルの小技・忘却防止メモ - PCスキルの小技・忘却防止メモのまとめ(wiki)
Copyright © 2009 by PCスキルの小技・忘却防止メモ. All rights reserved.