Я довольно новичок в концепции развития клиентской стороны javascript. Я сталкиваюсь с проблемой, хотя, возможно, я просто не понимаю, как сделать что-то с месивом фреймворков.Sammy.js и Knockout.js => Шаблоны без шаблонов?
Я знаю, что хочу использовать нокаут для его богатых клиентских сторон. Я также хочу использовать Sammy.js, чтобы разрешить маршрутизацию и передачу данных в представления для нокаутов (я исхожу из фона MVC, где я использую модель с данными, затем возвращаю представление (модель), а MVC связывает это хорошо и хорошо для меня) ,
Так что теперь я пытаюсь сделать что-то похоже на стороне клиента ...
Вот мой Index.html:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title>The EClassifieds Mobile</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<!-- <script type="text/javascript" src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>-->
<script type="text/javascript" charset="utf-8" src="./scripts/cordova-1.8.1.js"></script>
<script type="text/javascript" charset="utf-8" src="./scripts/knockout.js"></script>
<script type="text/javascript" charset="utf-8" src="./scripts/templ.js"></script>
<script type="text/javascript" charset="utf-8" src="./scripts/sammy.js"></script>
<script type="text/javascript" charset="utf-8" src="./scripts/sammy.tmpl.js"></script>
<script type="text/javascript" charset="utf-8" src="./services/RouteManager.js"></script>
<script type="text/javascript" charset="utf-8" src="./services/ApplicationManager.js"></script>
<link rel="stylesheet" href="./style/site.css" type="text/css" media="screen" title="no title" charset="utf-8"/>
<!-- <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />-->
</head>
<body>
<div id="main">
<h1>HELLO WORLD!</h1>
<!--Sammy should update the content of this div dynamically, creating a SPA (single page application)-->
</div>
</body>
</html>
Вот моя конфигурация Сэмми.
(function ($) {
alert('Building Routes');
var app = $.sammy('#main', function() {
this.use('Tmpl', 'html');
this.get('#/', function (context) {
alert('Rendering Partial for Login page');
context.app.swap('Loading...');
this.render("/views/Login.html");
});
});
$(function() {
app.run('#/');
});
})(jQuery);
Вот мой login.html
<!--Model File Goes Here -->
<script type="text/javascript" charset="utf-8" src="../models/Login.js"></script>
<fieldset title="Please Login to Begin :">
<div data-role="content" style="padding: 15px">
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="txtUsername">
Username
</label>
<input id="txtUsername" data-bind="value: username" placeholder="Stevie" value="" type="text" />
</fieldset>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-mini="true">
<label for="txtPassword">
Password
</label>
<input id="txtPassword" data-bind="value: password" placeholder="yep!" value="" type="password" />
</fieldset>
</div>
<a id="btnLogin" data-role="button" data-transition="fade" href="#page1" >
Login
</a>
</div>
<div id="errorText">
<h1></h1>
</div>
<p id="deviceProperties">Loading device properties...</p>
</fieldset>
<script type="text/javascript">
$(document).ready(function() {
ko.applyBindings(new LoginDataModel(0, "Stevie", "theTV", true));
});
</script>
мне нужен способ, чтобы передать данные от Сэмми получить обработчик, на странице нокаута. Есть ли способ сделать это, или я пытаюсь сделать невозможное?
UPDATE 1: Я бы очень хотелось, чтобы быть в состоянии сделать что-то вроде:
var app = $.sammy('#main', function() {
this.use('Tmpl', 'html');
this.get('#/', function (context) {
alert('Rendering Partial for Login page');
context.app.swap('Loading...');
var data = getLoginData();
this.render("/views/Login.html", data);
});
Sammy делает это точно такой же вещи, используя другие рамки шаблонов, однако, я не вижу, как я будет привязывать $ data в представлении Knockout к данным, переданным из Sammy.
Ваша ссылка на отправку теперь идет на сайт вредоносного ПО. Согласно статье SO http://stackoverflow.com/help/how-to-answer «Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы у ваших коллег было некоторое представление о том, что это такое и почему оно есть Всегда указывайте наиболее релевантную часть важной ссылки, если целевой сайт недоступен или постоянно находится в автономном режиме ». – AndyJ
Andy J спасибо за определение, исходная ссылка опустилась – Ananda