【发布时间】:2016-08-24 19:40:09
【问题描述】:
从组件中读取状态的正确方法是什么?我有一个在我的应用程序中可见的导航组件,当您在与导航中的项目相对应的页面上时,我正在尝试将 active 类添加到 <li> 元素。
最好像这样将状态传递给它:
index.html
<nav state-name="$state.current.name"></nav>
nav.component.js
export default class Nav {
template = `<ul>
<li ng-class="{ 'active': $ctrl.currentState === 'home }"
ui-sref="home">Home</li>
<li ng-class="{ 'active': $ctrl.currentState === 'about }"
ui-sref="about">About</li>`;
bindings = {
stateName: '<'
};
controller = NavController;
}
class NavController {
$onChanges = (changesObj) => {
if (changesObj.stateName.currentValue !== changesObj.stateName.previousValue) {
this.currentState = changesObj.stateName.currentValue;
}
}
}
现在这可行,我只是不确定我对通过绑定传递状态的感觉如何。我想我要问的是是否有更好的方法来做到这一点——也许是更优雅的解决方案?
感谢任何帮助。提前致谢!
【问题讨论】:
-
只是好奇......你为什么不想通过绑定来传递它?
-
@ExplosionPills 没有理由。我只是之前没有传递状态,所以只是质疑这是否是正确的方法。
-
“感谢任何帮助” 将
stateName分配给另一个属性并监听更改对于此示例没有任何意义。Nav也不是一个类而不是一个对象。此外,该问题被标记为“ecmascript-6”,但 ES6 不支持类属性。
标签: javascript angularjs ecmascript-6