Nano Hash - криптовалюты, майнинг, программирование

Следит ли ng-init за изменениями в созданном свойстве, как это делает ng-model?

Следит ли ng-init за изменениями в созданном свойстве, как это делает ng-model?

По-видимому, нет, поэтому я установил часы, как показано ниже:

app.js

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.$watch('myProp1', function(newVal, oldVal){
    $scope.myProp1 = newVal
  })
});

HTML

<body ng-controller="MainCtrl">
<input ng-init='myProp="my property"'>{{myProp}}</br>
<input ng-init='myProp1="my 1 property"'>{{myProp1}}</br>
<input ng-init='myProp11="my 11 property"' ng-model='myProp11'>{{myProp11}}

Here is plnkr

  1. Следит ли ng-init за изменениями в созданном свойстве, как это делает ng-model?
  2. Как просмотреть изменения свойства, созданного ng-init?
  3. Что не так с функцией $watch выше?

Ответы:


1

Следит ли ng-init за изменениями в созданном свойстве, как это делает ng-model?

Нет, это только для инициализации свойства в области. Я бы рекомендовал не использовать его. Разметка не предназначена для инициализации переменных, вы должны делать это в своем контроллере, насколько это возможно.

Как просмотреть изменения свойства, созданного ng-init?

Вы можете смотреть так же, как смотреть любое другое свойство, но просмотр этого не означает, что часы сработают. Часы запускаются только во время цикла дайджеста, а цикл дайджеста вызывается только в том случае, если angular имеет какое-то отношение к конкретному действию.

Что не так с функцией $watch выше?

Ваши часы на prop1 никогда не будут выполнены (после инициализации ng Init), потому что вы никогда не меняете значение модели, поскольку к ней не привязана ngModel. И к элементу не применяется угловое действие, и, следовательно, цикл дайджеста не произойдет.

В качестве примера просто прикрепите событие keyup к элементу и присвойте значение input свойству myProp, поскольку у вас есть зарегистрированный обработчик keyup, он вызовет цикл дайджеста после запуска обработчика, и вы увидите, как часы выполняются и привязка обновляется

 <input ng-init='myProp="my property"' ng-keyup="test(myProp=$event.target.value)">{{myProp}}

plnkr

29.08.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..