Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

141
Views
¿Cómo llamar a la función del controlador afterRender en foreach anidado?

Tenía una declaración foreach y usé afterRender para llamar a la función.

 <div data-bind="foreach: { data: Object.keys(pricings()), as: '_propkey', afterRender: pricingTableRenderedHandler }">

Durante esta iteración, _propkey era una sola cadena. Luego tuve que cambiar la instrucción foreach a esto:

 <div data-bind="foreach: { data: pricings(), as: '_propertykey', afterRender: pricingTableRenderedHandler}"> <div data-bind="foreach: { data: _propertykey.states, as: '_secondarypropkey'}">

función de controlador

 self.pricingTableRenderedHandler = function (data, stateName) { var tableSelector = "#" + stateName.states.state.replace(/\s/g, ''); hideEmptyTableColumns.hide(tableSelector); replaceEmptyTableCells.replaceBy(self.emptyCellValue, tableSelector); }

En el caso de foreach antiguo, recibió una cadena en el parámetro stateName. Ahora, recibe un objeto que se ve así.

 [ "cropYear" : "2020" "states": [ { "state": "Tbilisi", "details": { "PriceHeaders": [ ], "Comment": "TBi", "Pricings": [ ] } } { "state": "Texas", "details": { "PriceHeaders": [ ], "Comment": "dasdsa", "Pricings": [ ] } } ]

]

Solo necesito tomar el valor de la propiedad "estado". Supongo que necesito llamar a la función del controlador en foreach interno, pero por alguna razón, no puedo. A menos que esté escrito en el primer foreach, no se llama.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El enlace foreach crea un nuevo contexto de enlace para cada elemento. Si, dentro de la plantilla que pasa a foreach , necesita acceder a una propiedad del contexto original, puede acceder usando $parent .

 <div data-bind="foreach: { data: pricings(), as: '_propertykey' }"> <div data-bind="foreach: { data: _propertykey.states, as: '_secondarypropkey'}, afterRender: $parent.pricingTableRenderedHandler"> <!-- ^^^^^^^^ --> </div> </div>

Tenga en cuenta que la función se llamará con el elemento actual ( $data ) como this . Si su controlador se basa en this , puede usar $parent.methodName.bind($parent) .

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!