【问题标题】:Passing an array into a component in Angular 1.5 through an attribute通过属性将数组传递到Angular 1.5中的组件
【发布时间】:2017-04-15 03:51:46
【问题描述】:

我正在尝试将数组从父控制器传递到子组件。

<plant-select plants="{{head.permittedPlants}}"></plant-select>

head.permittedPlants 是一个数组

我收到以下错误:

“错误:[$parse:syntax] 语法错误:从 [{head.permittedPlants}}] 开始的表达式 [{{head.permittedPlants}}] 的第 2 列中的标记 '{' 无效键。”

我只能传入一个字符串吗?

我的组件如下所示:

let plantSelectComponent = {
  bindings:{
  plants:'<'
},
  template:require('./plantSelect.template.html'),
  controller:plantSelectController
}

下面父级的控制器。 “permittedPlantsResolve”是来自 UI-Router 的解析:

function headerCtrl($scope, $ngRedux, $mdSidenav, $log, permittedPlantsResolve){

  let ctrl = this;


 ctrl.permittedPlants = permittedPlantsResolve;


 ctrl.consoleState = function(){
    console.log($ngRedux.getState());
  }

  ctrl.menuToggle = function(){
    $mdSidenav('left').toggle()
  }

}

export default headerCtrl;

如果我将绑定更改为“@”,它通过字符串没有问题。数组有可能吗?我必须传递一个字符串吗?

已解决:在组件的控制器中,我在 postLink 上分配了 $attrs.plants,分配给它 onInit 解决了问题!

【问题讨论】:

  • 包含 的模板文件不是组件,只是附加了控制器的 html。它也需要是一个组件吗?

标签: angularjs arrays syntax-error components


【解决方案1】:

如果您删除模板中的 {{}},您应该可以继续使用单向绑定 (

【讨论】:

  • 当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants”
  • 您也可以发布您的控制器吗?
  • 您确定 head 是您模板中控制器的名称吗?
  • 是的。模板中的其他任何地方我都使用“head”作为控制器,它工作正常。 等等..
  • 奇怪...我唯一能想到的另一件事是您的 allowedPlantsResolve 不是数组...
【解决方案2】:

将植物的绑定从

【讨论】:

  • 当我这样做时,传递给我的组件的只是一个字符串“head.permittedPlants”
  • 其实,去掉引号,留下花括号
  • @Ladmerc 带大括号,没有引号,仍然是同样的问题。传递字符串“head.permittedPlants”
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 2016-08-21
  • 2017-03-05
  • 2016-09-23
  • 1970-01-01
  • 2015-08-20
  • 2017-01-22
  • 2020-12-04
相关资源
最近更新 更多