При использовании привязки атрибутов в компонентах данные, переданные контроллеру, всегда являются строкой. Однако я пытаюсь передать целое число, и мне трудно преобразовать его из строки и иметь конверсионную палочку.Связывание целого с компонентом AngularJS 1.5
Я попытался сохранить данные как целое число в $onInit()
, но за пределами этой функции данные возвращаются к исходному состоянию (типу и значению). Я понимаю, что компоненты не должны изменять данные, переданные в качестве общего правила, но поскольку это привязка атрибута и данные передаются по значению, я не думал, что это применимо.
function IntegerBindingController() {
this.$onInit = function() {
// Assuming 'number="2"' in the HTML
// This only changes the data inside this function
this.number = parseInt(this.number)
this.typeofNumber = typeof this.number // evaluates to 'number'
this.simpleAdd = this.number + 5 // evaluates to 7
this.dataAdd = this.numberOneWay + 5
console.log(this)
}
this.test = function() {
// this.number is a string inside this function
this.typeofNumber = typeof this.number // evaluates to 'string'
this.simpleAdd = this.number + 5 // evaluates to 25
}
}
я могу решить эту проблему путем копирования данных на новое место на контроллере, но мне интересно, если кто-то может объяснить, что здесь происходит. См. Это Plunker для рабочего примера проблемы.
Я думал, один из главных моментов компонентов против директив были использование односторонних привязок ('<') вместо двухсторонний ('=')? В любом случае использование '<' работает, но остается вопрос, почему изменение 'this.number' в' $ onInit() 'действует только во время этой функции. Кроме того, цель состоит в том, чтобы иметь возможность передавать целое число через шаблон, вместо того, чтобы сначала создавать объект. –