Angular:从组件中读取状态
Angular: Reading State from a Component
从组件中读取状态的正确方法是什么?我有一个导航组件,在我的应用程序中是可见的,我试图添加类的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;
}
}
}
现在工作了,我只是不确定我是如何通过绑定传递状态的。我想问的是,是否有更好的方法——也许是更优雅的解决方案?
任何帮助都是感激的。提前感谢!
当你基本上监听$state.current.name的变化时,你也可以直接监听状态变化事件。
我为breadcrumb导航做了类似的事情,但使用了ui-router: http://angular-ui.github.io/ui-router/feature-1.0/的新过渡钩子。转换钩子的优点是,当转换发生时,它们不需要监视路由器调用的变量或事件。
有几个选项-
- 如果这个组件应该用于不同的动态导航解决方案-你的解决方案是好的。
- 你可以在你的应用程序中添加一个服务来负责状态管理——而不是直接使用$state——并添加一堆与之相关的逻辑。对导航控件隐藏它并没有什么好处,所以你可以把它注入到控制器中,从而避免绑定。UT也很简单,因为你可以毫无问题地模拟这个服务。
相关文章:
- 从桌面读取python文件时高亮显示代码
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 未捕获的类型错误:无法读取属性'状态'在react中为null
- 未捕获的类型错误:无法读取属性'状态'的未定义
- 未能读取'状态'属性来自'XMLHttpRequest':对象's状态不得为打开
- 照片库css所选状态未被cookie读取
- 安卓 - 复选框如何读取检查状态的值
- 安卓 - 通过读取文件检查开关状态
- 从 django 读取复选框状态
- Chrome - 即使先检查也无法读取未定义的属性“状态”
- 读取功能(无状态)组件中的<输入>
- Chrome,Safari - 未捕获的类型错误:无法读取 null 的属性“状态”
- 角度显示类型错误:无法读取未定义的属性“状态”
- 尝试使用字符串标记器读取状态名时出现错误
- Angular:从组件中读取状态
- Javascript可以读取CSS中的元素's:hover状态吗?
- 在 Ext JS 中读取单元格脏状态
- Javascript 从 REST 服务器读取带有状态更新的 JSON
- 无法读取反应状态的属性