Cannot use `$if` together with setting `$state` from within `$lifecycle`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- javascript
- Bereich
- frontend
Rechercherichtung
Reproduziere die drei Szenenkonfigurationen aus dem Issue und vergleiche $if, $lifecycle post-load und $state.set. Beginne damit, den Umgang des Frameworks mit Lifecycle, State und Behavior nachzuverfolgen, und prüfe das verwandte Issue #41; abgeschlossen ist die Aufgabe, wenn das Setzen von path während post-load die durch $if gesteuerten Nodes korrekt aktualisiert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
In short, I can't use $if together with setting $state from within post-load.
This works:
FamousFramework.scene('ildar:page-controller', {
behaviors: {
// '#home': {
// '$if': function(path) { return path === '/' }
// },
// '#blog': {
// '$if': function(path) { return path === '/blog' }
// },
// '#about': {
// '$if': function(path) { return path === '/about' }
// },
'.page': {
'size': [200, 200],
'align': [0.5, 0.5],
'mount-point': [0.5, 0.5],
'style': {
'background': 'whitesmoke'
}
}
},
events: {
'$lifecycle': {
'post-load': function($state) {
console.log('post-load');
$state.set('path', '/');
}
},
'.page': {
'click': function($state) {
console.log('WORKS');
$state.set('path', '/blog');
}
}
},
states: {
path: null,
},
tree: `
<node id="home" class="page"> <div> HOME </div> </node>
<node id="blog" class="page"> <div> BLOG </div> </node>
<node id="about" class="page"> <div> ABOUT </div> </node>
`
});
This also works:
FamousFramework.scene('ildar:page-controller', {
behaviors: {
'#home': {
'$if': function(path) { return path === '/' }
},
'#blog': {
'$if': function(path) { return path === '/blog' }
},
'#about': {
'$if': function(path) { return path === '/about' }
},
'.page': {
'size': [200, 200],
'align': [0.5, 0.5],
'mount-point': [0.5, 0.5],
'style': {
'background': 'whitesmoke'
}
}
},
events: {
'$lifecycle': {
'post-load': function($state) {
console.log('post-load');
//
// If $state isn't set from here, the code works.
//
// $state.set('path', '/');
}
},
'.page': {
'click': function($state) {
console.log('WORKS');
$state.set('path', '/blog');
}
}
},
states: {
path: '/',
},
tree: `
<node id="home" class="page"> <div> HOME </div> </node>
<node id="blog" class="page"> <div> BLOG </div> </node>
<node id="about" class="page"> <div> ABOUT </div> </node>
`
});
But this doesn't work:
FamousFramework.scene('ildar:page-controller', {
behaviors: {
'#home': {
'$if': function(path) { return path === '/' }
},
'#blog': {
'$if': function(path) { return path === '/blog' }
},
'#about': {
'$if': function(path) { return path === '/about' }
},
'.page': {
'size': [200, 200],
'align': [0.5, 0.5],
'mount-point': [0.5, 0.5],
'style': {
'background': 'whitesmoke'
}
}
},
events: {
'$lifecycle': {
'post-load': function($state) {
console.log('post-load');
$state.set('path', '/');
}
},
'.page': {
'click': function($state) {
console.log('WORKS');
$state.set('path', '/blog');
}
}
},
states: {
path: null,
},
tree: `
<node id="home" class="page"> <div> HOME </div> </node>
<node id="blog" class="page"> <div> BLOG </div> </node>
<node id="about" class="page"> <div> ABOUT </div> </node>
`
});
Could be related to #41
- Vorherrschende Sprache
- JavaScript
- Sterne
- 394
- Forks
- 62
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus Famous/framework
-
$repeat does not repeatOffen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 20/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
-
Improve Scroll ViewOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
Alle Issues in Famous/framework
Ähnliche Issues
-
Engineering
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
techmatters/terraso-web-client#3095 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Service process inherits the caller's cwd at first use, holding that folder open on Windows (EBUSY)Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
nextcloud/viewer#3424 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag