Angularjs 不确定如何创建良好的重复使用行为

Angularjs 不确定如何创建良好的重复使用行为,angularjs,redux,flux,Angularjs,Redux,Flux,我有一个已经存在的AngularJS 1.6应用程序,它是用一些组件构建的。该应用程序本身只是一些旧的和已经存在的AngularJS指令的展示。我在一些组件中实现了它们,以便在UI上打印它们 我最近一直在学习Redux,我对这方面还是新手,希望在整个项目中实现正确的Redux行为。据我所知,有一个单一的应用程序状态,其中所有数据都是不可变的,并且单向绑定到其组件,这些组件使用其父级创建的事件,这些事件最终使用还原器来重新创建应用程序状态并相应地更改数据 我现在的问题是,这个已经存在的指令是为了修

我有一个已经存在的AngularJS 1.6应用程序,它是用一些组件构建的。该应用程序本身只是一些旧的和已经存在的AngularJS指令的展示。我在一些组件中实现了它们,以便在UI上打印它们

我最近一直在学习Redux,我对这方面还是新手,希望在整个项目中实现正确的Redux行为。据我所知,有一个单一的应用程序状态,其中所有数据都是不可变的,并且单向绑定到其组件,这些组件使用其父级创建的事件,这些事件最终使用还原器来重新创建应用程序状态并相应地更改数据

我现在的问题是,这个已经存在的指令是为了修改数据本身而构建的,它们不会触发事件

例如,此日期选择器:

容器组件具有以下代码

<example-datepicker date="model.date"></example-datepicker>
这个模板使用了我提到的旧指令

<date-picker date-model="model.date" name="dateForm"></date-picker>
现在,datepicker指令只负责显示datepicker,并在用户选择日期时更改模型。现在假设我的应用程序状态有这个日期字符串。它应该是不可变的,那么,指令不应该改变它,对吗

我是否应该根据这种行为相应地更改指令,如果不是,如何将其触发为事件?我曾考虑过使用组件的$onChanges函数,但这需要双向绑定,这实际上改变了模型,也就是改变了状态,而状态应该是不可变的

我是否错误地理解了redux,或者我试图使用的状态>组件>指令行为在redux中根本不可能实现

提前感谢

首先,您可以尝试使用它的连接器,认为它可以简化一些东西。除此之外,您还应该从指令/组件中分派操作来更新存储,并且存储会通知所有侦听器您可以使用redux提供的subscribe方法所做的更改

同样重要的一点是,您不需要将所有数据都存储在redux存储中,有时指令/组件具有自己的数据—可能是双向绑定—对于表单来说,数据更灵活。在这种情况下,你只需要在某个地方发送一个动作


如果需要触发$onChanges钩子,只需更新传递给组件的对象的引用即可

是的,我正在使用ng redux并成功地连接了所有这些细节。问题是,要么将指令更改为分派操作,要么在更大的表单中使用它,然后从表单的save中分派操作,对吗?我实际上更喜欢做的是创建一个连接到存储的特殊组件,它们包含可以传递给指令的所有所需操作,在这些组件内部。是的,在表单的submit或blur上调用操作是可以的
<date-picker date-model="model.date" name="dateForm"></date-picker>