KO Модели представления: объектные литералы и функции
В Knockout JS модели представления можно объявлять с использованием либо объектных литералов, либо функций. Хотя основной целью обоих является определение наблюдаемых свойств и вычисляемых функций, ключевые различия между ними влияют на инкапсуляцию, гибкость и организацию кода.
Объектные литералы:
var viewModel = { firstname: ko.observable("Bob") };
Объектные литералы просты и лаконичны для простых моделей представления без сложной логики или вычисляемых функций. Однако они:
Функции:
var viewModel = function() { this.firstname = ko.observable("Bob"); };
Функции имеют ряд преимуществ:
Рекомендации:
В в большинстве случаев рекомендуется использовать функцию для определения моделей представления. Он обеспечивает большую инкапсуляцию и гибкость, упрощая управление сложными моделями представлений и обеспечивая правильный доступ к ним.
Частные свойства и методы:
Модели представления на основе функций разрешить создание частных свойств и методов в этом контексте с помощью собственного шаблона:
var ViewModel = function() { var self = this; self.privateProperty = ko.observable(); self.privateMethod = function() {}; };
Функция привязки:
В качестве альтернативы современные браузеры и Knockout JS предоставляют функцию привязки для явной привязки функции к конкретному контексту this:
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
Использование функции привязки гарантирует, что это относится к экземпляру модели представления даже при вызове функции из вложенной области.
Вывод:
Хотя для определения моделей представления исключения можно использовать как объектные литералы, так и функции, функции обычно предпочтительнее из-за их инкапсуляции, гибкости и эффективной обработки этого в вычисляемых функциях.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3