Как обойти ошибку: $compile:nonassign Невозможное выражение в угловом компоненте 1.5
Так что я относительно новичок в компонентах, привязках и парадигме 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 ответ
Ошибка означает, что вы пытаетесь присвоить значение выражению []
через двустороннюю привязку.
https://docs.angularjs.org/error/$ compile / 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"
})