Javascript увеличить значение переменной в объекте - PullRequest
0 голосов
/ 14 января 2019
let myPos = 0
let load = new Riload({
    el: '#loadMyArticle',
    url: '../users/myArticle',
    data: 'myPos='+myPos,
    sukses: () => {
        myPos = myPos + 1
        console.log(myPos)
    }
})

У меня есть переменная myPos, где значение по умолчанию равно 0. Если функция загрузки успешно выполняется, myPos будет увеличиваться + 1 при каждом обратном вызове. Моя проблема, если я запускаю console.log (myPos) в обратном вызове sukses, он может увеличиться. Но myPos в свойстве data по-прежнему имеет значение 0. Как увеличить эту переменную в свойстве data?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

let myPos = 0
let load = new Riload({
  el: '#loadMyArticle',
  url: '../users/myArticle',
  data: '',
  sukses() {
    this.incrementPos()
  },
  incrementPos() {
    myPos += 1
    this.setData()
  },
  setData() {
    this.data = `myPostTracker = ${myPos}`
  }
})

Получив доступ к опоре data через функцию setData, вы можете установить свойство по своему усмотрению. Я также добавил функцию incrementPos к объекту, чтобы ее можно было вызывать независимо от обратного вызова жизненного цикла success (или sukses).

Надеюсь, это поможет. Первоначально, когда вы вызываете sukses, он действительно увеличивает значение переменной myPos, но свойство data не переустанавливается, поэтому переменная myPos, на которую вы ссылались в конкатенации строк, не была изменение / обновление.

let initPos = 0

const obj = {
  myPos: initPos,
  data: '',
  success() {
    this.incrementPos()
  },
  incrementPos() {
    initPos += 1
    this.myPos = initPos
    this.setData()
  },
  setData() {
    this.data = `myPostTracker = ${this.myPos}`
  }
}


obj.success()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)

Этот подход может быть реализован без свойства myPos объекта obj.

let myPos = 0

const obj = {
  data: '',
  success() {
    this.incrementPos()
  },
  incrementPos() {
    myPos += 1
    this.setData()
  },
  setData() {
    this.data = `myPostTracker = ${myPos}`
  }
}


obj.success()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)

obj.incrementPos()
console.log(obj.data)
0 голосов
/ 14 января 2019

это всего лишь пример концепции. получить доступ к вновь созданному объекту во время обратного вызова «sukses» и оттуда обновить поле «data»

let myPos = 0 
let load = new Riload({
    el: '#loadMyArticle',
    url: '../users/myArticle',
    data: 'myPos='+myPos,
    sukses: () => {
        myPos = myPos + 1
        load.data = 'myPos='+myPos
        console.log(myPos)
    } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...