"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > ## Modelos Knockout View: Literais de objetos ou funções – Qual é o certo para você?

## Modelos Knockout View: Literais de objetos ou funções – Qual é o certo para você?

Publicado em 19/11/2024
Navegar:396

##  Knockout View Models: Object Literals or Functions – Which One is Right for You?

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:

  • Não fornecem acesso a um contexto pré-definido dentro de funções computadas.
  • Pode ser difícil de gerenciar se o modelo de visualização contiver muitos observáveis ​​e funções computadas.

Funções:

var viewModel = function() {
    this.firstname = ko.observable("Bob");
};

As funções oferecem diversas vantagens:

  • Encapsulação: O uso de uma função encapsula a criação do View Model e suas propriedades em uma única chamada.
  • este contexto em funções computadas: O contexto this é automaticamente vinculado à instância do View Model, permitindo acesso conveniente às suas propriedades e métodos dentro de funções computadas.
  • Flexibilidade: As funções podem receber argumentos e ser usadas para inicializar o View Model com base em dados externos ou outros objetos.

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.

Tutorial mais recente Mais>

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