Я новичок в Knockout. В основном мне нужно получить массив элементов (пары цены и количества) от контроллера, а затем отобразить его на моем представлении. Но перед тем, как я его покажу, я хочу использовать нокаут для вычисления (подсчета промежуточного итога) в модели viewmodel, а затем передать новый массив в представление. Я знаю, что могу привязать исходный массив к моему представлению. Но как я могу передать этот массив в мою модель просмотра?Нокаут: передайте значение от контроллера для просмотра, а затем передайте его из вида в режим просмотра
ответ
Вы не переходите с точки зрения в режим просмотра, это наоборот. Контроллер передает данные в режим просмотра, привязанный к представлению. Я отвлекся.
Существует несколько различных методов, но общий - это отображение данных в наблюдаемые значения. Нокаут имеет вспомогательный метод arrayMap
, который поможет преобразовать элементы в массиве в наблюдаемые. Пример ниже:
var Item = function(data) {
var self = this;
self.Name = ko.observable(data.Name);
self.Price = ko.observable(data.Price);
self.Qty = ko.observable(data.Qty);
self.Total = ko.pureComputed(function() { return self.Price() * self.Qty();});
}
var viewModel = function() {
var self =this;
// list of items
self.Data = ko.observableArray([]);
// simulate ajax call to fetch data
self.Load = function() {
var data = [
{ Name: "A", Price: 12.34, Qty: 1},
{ Name: "B", Price: 23.45, Qty: 2 },
{ Name: "C", Price: 1234.56, Qty: 3 }
];
var mappedData = ko.utils.arrayMap(data, function(item) {
return new Item(item);
});
this.Data(mappedData);
}
}
var vm = new viewModel();
ko.applyBindings(vm);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach: Data">
<li>
Name: <span data-bind="text: Name"></span>
Quantity: <input type="text" data-bind="value: Qty" style="width: 100px;" />
Price: <input type="text" data-bind="value: Price" style="width: 100px;" />
Total: <span data-bind="text: Total"></span>
</li>
</ul>
<p>Click the button to simulate a load from API
<button data-bind="click: Load">Load</button></p>
Извините, только что понял, что я забыл добавить промежуточный итог этой модели, но это должно быть довольно легко сделать. Добавьте вычисленное значение в 'viewModel' и используйте команду' ko.utils.arrayForEach' для добавления каждой строки. – Quango
- 1. Передайте значение из form_tag в контроллер, а затем для просмотра
- 2. Передайте переменную от контроллера для просмотра
- 3. Передайте несколько переменных от контроллера для просмотра в cakephp
- 4. Передайте данные двум контроллерам просмотра панели табуляции
- 5. Передайте значение из контроллера ASP.NET в CSS
- 6. Передайте массив элементов модели для просмотра
- 7. Передайте входное значение html в нокаут-вид
- 8. Обновление пользовательского интерфейса контроллера просмотра, а затем его отклонение
- 9. Передайте значение от одного контроллера к другому с точки зрения
- 10. Передайте значение другому диспетчеру просмотра в соответствии с tableviewcell
- 11. Передайте значение от контроллера до частичного в ZF2
- 12. Передайте значение другому экрану
- 13. модель контроллера вида просмотра C#
- 14. Передайте значение в текстовое поле первого вида
- 15. NSInvocationOperation от запуска с контроллера просмотра и контроллера вида?
- 16. nodejs передать значение от контроллера для просмотра
- 17. Grails: отправить значение от контроллера для просмотра
- 18. Получить значение суммирования от контроллера для просмотра
- 19. Передайте строковое значение от одного контроллера представления к другому
- 20. Передача объекта от контроллера для просмотра затем другой метод контроллера
- 21. PHP: получите значение TEXTBOX, затем передайте его в VARIABLE
- 22. Передайте значение indexpath в FirstViewController
- 23. Передайте URL-адрес для просмотра изображений через AFNetworkingLibrary
- 24. Передайте изображение между двумя уже загруженными диспетчерами просмотра
- 25. Нокаут - изменение другого значения вида просмотра
- 26. Передайте данные ajax от контроллера к директиве
- 27. Angularjs: Передайте параметр от контроллера к заводским
- 28. как отправить массив от контроллера для просмотра
- 29. Загрузите контроллер просмотра, а затем удалите предыдущий из памяти
- 30. Угловая, передайте значение от модели html до контроллера
Пожалуйста, поделитесь код очень трудно представить себе, где ваш застряли. – Dnyanesh