如何解决错误:$ compile:非分配角度1.5组件中的不可分配表达式

时间:2016-02-18 02:33:19

标签: angularjs angularjs-bindings angularjs-components

所以我对组件,绑定和Angular 2范例都比较陌生。我想让我的Angular 1.3应用程序准备好转移,所以我一直在尝试采用新的组件指令。

我无法通过不可分配的绑定错误!

这是我包含组件的地方:

<schedule currentSchedule="[]" class="panel"></schedule>

组件本身:

app.component('schedule', {
bindings: {
    currentSchedule: "="
},
controllerAs: 'SchedCtrl',
controller: function(Schedules) 
{

    var scope = this

    Schedules.refresh()
    .then(function(result) {
        scope.currentSchedule = result
    })
},
templateUrl: "templates/schedule.html"
})

组件模板:

<div ng-repeat="apt in SchedCtrl.currentSchedule | orderBy: 'App_DtTm'">
    {{apt.name}}
</div>

我觉得我错过了一些非常明显的东西。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

错误意味着您正尝试通过双向绑定为表达式[]分配值。

https://docs.angularjs.org/error/ $编译/ nonassign

如果您确实需要双向绑定,请使用父作用域的属性。

<schedule currentSchedule="parentCtrl.currentSchedule" class="panel"></schedule>

如果您不需要双向绑定,请使用<代替=,并将初始计划和当前计划分开。

app.component('schedule', {
  bindings: {
    initialSchedule: "<"
  },
  controllerAs: 'SchedCtrl',
  controller: function(Schedules) 
  {

    var scope = this
    scope.currentSchedule = scope.initialSchedule

    Schedules.refresh()
      .then(function(result) {
        scope.currentSchedule = result
    })
  },
  templateUrl: "templates/schedule.html"
})