KO View Models: Object Literals vs. Functions
No Knockout JS, View Models podem ser declarados usando literais de objeto ou funções. Embora o objetivo principal de ambos seja definir propriedades observáveis e funções computadas, as principais diferenças entre elas afetam o encapsulamento, a flexibilidade e a organização do código.
Literais de objeto:
var viewModel = { firstname: ko.observable("Bob") };
Literais de objeto são diretos e concisos para modelos de visualização simples, sem lógica complexa ou funções computadas. No entanto, eles:
Funções:
var viewModel = function() { this.firstname = ko.observable("Bob"); };
As funções oferecem diversas vantagens:
Práticas recomendadas:
Em na maioria dos casos, é recomendado usar uma função para definir modelos de visualização. Ele fornece maior encapsulamento e flexibilidade, facilitando o gerenciamento de modelos de visualização complexos e garantindo acesso adequado a eles.
Propriedades e métodos privados:
Modelos de visualização baseados em funções habilite a criação de propriedades e métodos privados dentro deste contexto usando o padrão próprio:
var ViewModel = function() { var self = this; self.privateProperty = ko.observable(); self.privateMethod = function() {}; };
Função de vinculação:
Como alternativa, navegadores modernos e Knockout JS fornecem a função de vinculação para vincular explicitamente uma função a um contexto específico:
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
O uso da função bind garante que this se refira à instância do View Model mesmo ao chamar a função de dentro de um escopo aninhado.
Conclusão:
Embora literais de objetos e funções possam ser usados para definir modelos de visualização Knockout, as funções geralmente são preferidas por seu encapsulamento, flexibilidade e manipulação eficiente disso em funções computadas.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3