0

我的 Angular 应用程序中有一个带有 $onChanges 函数的组件“MealItemCollection”。该组件由两个单独的父组件“Recipe”和“MealPlan”使用。两个父组件都以完全相同的方式传入“items”道具。

但是,虽然 $onChanges 函数在从 MealPlan 组件传递对项目的更改时正常工作,但它仅在从食谱组件传递对项目的更改时工作 1 次。也就是说,当我有 0 个项目并添加 1 时,$onChanges 触发,但是当我有 1 个项目并添加到它时,$onChanges 不会触发。

在配方父组件中,我有一个带有 items 属性的“recipeModel”对象。当我添加一个项目时,它实际上确实向 recipeModel.items 添加了一个项目,正如 console.logs 所验证的那样。但无论出于何种原因,对 items 道具的更改都没有传递给 MealItemCollection 组件。

我尝试用 $doCheck 替换 $onChanges 但这不起作用,因为就像我说的那样,对 items 道具的更改没有传递到 MealItemCollection 组件中。

有人知道这里可能发生什么吗?

4

1 回答 1

0

出于某种原因,这段代码:

ctrl.recipeModel.ingredients = _.clone(ctrl.recipeModel.ingredients);

在 recipeModel 更新之后,这足以触发子组件中的 onChanges。

有人知道这里发生了什么吗?

于 2017-11-06T19:09:57.630 回答