从组件中读取状态的正确方法是什么?我有一个在我的应用中可见的导航组件,当您在与该项目对应的页面上时,我正在尝试将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;
}
}
}
现在这个有效,我只是不确定我对通过绑定传递状态的感觉。我想我要问的是,是否有更好的方法可以做到这一点 - 或许更优雅的解决方案?
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
由于您基本上正在监听$ state.current.name的更改,因此您还可以直接侦听状态更改事件。
我为一个痕迹导航做了类似的事情但是使用了ui-router的新转换钩子:http://angular-ui.github.io/ui-router/feature-1.0/。转换挂钩的优点是,一旦发生转换,它们就不需要观察路由器调用的变量或事件。
或者你可以切断中间人并直接消耗组件内的$ state。
答案 1 :(得分:0)
选项很少 -