У меня возникли проблемы с компонентами knockoutjs, я следую примеру в official knockout component documentation.Вызов компонента на главной странице в knockoutjs
Как я могу назвать свой компонент виджета на главной странице? Я думаю, что я могу помещать код в неправильные места.
Код: index.html
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="js/libs/knockout/knockout-3.3.0.js" ></script>
<script type="text/javascript" src="js/widget.js" ></script>
</head>
<body>
<div>TODO write content</div>
</body>
</html>
main.js
ko.components.register('like-or-dislike', {
viewModel: { require: 'files/widget' },
template: { require: 'text!files/widget.html' }
});
alert(ko.components.isRegistered('like-or-dislike'));
widget.html
<ul data-bind="foreach: products">
<li class="product">
<strong data-bind="text: name"></strong>
<like-widget params="value: userRating"></like-widget>
</li>
</ul>
widget.js
function Product(name, rating) {
this.name = name;
this.userRating = ko.observable(rating || null);
}
function MyViewModel() {
this.products = [
new Product('Garlic bread'),
new Product('Pain au chocolat'),
new Product('Seagull spaghetti', 'like') // This one was already 'liked'
];
}
ko.applyBindings(new MyViewModel());
Просто добавьте '<как-или-нелюбовь> как-или-нелюбовь>' для вашего HTML. – Dandy
@ Dandy: Не повезло –
В примере используется 'require.js' для загрузки viewmodel и шаблона, но вы не используете его в своем html. – Dandy