我正在使用我尝试不编辑的用户贡献模块,因此升级非常简单。
我正在尝试允许用户浏览本地文件系统上的CSV文件,解析它并将其显示在动态表中。为此,我正在使用PapaParse
,ui.grid
和angularFileUpload
。
我遇到的问题是它们都在层次结构的不同层面上工作。
angularFileUpload非常简单 - 它在我的控制器中调用一个函数(使用controllerAs语法)。该函数然后运行PapaParse函数将CSV文件转换为JSON对象(到目前为止所有工作)。
我遇到的问题是ui.grid
适用于$ scope对象,因为它是一个属性指令,并且不支持观察者监视变量的变化(你必须调用一个函数来更新数据) - 绑定数据)。
所以问题是,在我的控制器中,正确/推荐方式与外部指令通信而不编辑指令来监听消息。
答案 0 :(得分:0)
ui.grid
应该绑定到其关联数据的更改。因此,您应该只更改网格也绑定到的本地$ scope,并且一切正常。
正如您所提到的,指令不会收听消息,但这也不是Angular的工作方式。 Angular强制数据绑定,因此通过将字段绑定到指令中,组件应该在您更改绑定到的模型后立即更新其表示。
不幸的是,ui.grid
不符合此惯例。因此,只要用户的数据存在(在打开文件后通过$watch
调用的函数内),就必须立即渲染网格。例如,这可以通过ngIf
来完成,其中只有当字段为真时才加载子指令。当用户在两个CSV之间切换时,您可以将值设置为false,在模型中加载数据并再次将其设置为true。请确保介于两者之间有一个摘要周期(例如,通过$timeout
),以便您的更改影响用户界面。