【发布时间】:2018-11-07 01:34:21
【问题描述】:
我已有一个由一些组件构建的 AngularJS (1.6) 应用程序。该应用程序本身只是展示了一些旧的和已经存在的 AngularJS 指令。我已经在一些组件中实现了它们,以便在 UI 上打印它们。
我最近一直在学习 Redux(我还是新手),想在整个项目中实现正确的 redux 行为。据我了解,有单个应用程序状态,其中所有数据都是不可变的,并且单向绑定到其组件,这些组件使用其父级创建的事件,最终使用 reducer,重新创建应用程序状态并相应地更改数据。
我现在的问题是,这个已经现有的指令,是为了自己修改数据而构建的,它们不会触发事件。
例如这个日期选择器:
容器组件有这个代码
<example-datepicker date="model.date"></example-datepicker>
日期选择器组件使用此控制器绑定
bindings: {
date: '='
}
还有这个模板,它确实使用了我提到的旧指令
<date-picker date-model="model.date" name="dateForm"></date-picker>
现在,日期选择器指令只负责显示日期选择器,并在用户选择日期时更改模型。现在想象一下我的应用程序状态有这个“日期”字符串。它应该是不可变的,那么指令不应该改变它,对吧?
我是否应该相应地更改指令 到此行为,如果不是,我如何触发此 进入事件?我考虑过使用组件的 $onChanges 函数,但这需要 双向绑定,字面意思是 更改模型,并且正在改变状态,它应该是不可变的。
我是否错误地理解了 redux,或者我尝试使用的这种 State>Component>Directive 行为对于 Redux 来说只是 不可能?
提前致谢
【问题讨论】: