Здесь определение директивы:
(function () {
"use strict";
angular.module("damageEvent").directive("sitesDamage", ["damageEventServices", sitesDamage]);
function sitesDamage(damageEventServices) {
var directive = {
restrict: "E",
scope: {
sitesDamagesList:'=',
region: "=",
contractid: "=",
frequencyid: "="
},
templateUrl: "app/damageEvent/templates/sitesDamage.tmpl.html",
controller: "sitesDamageController",
controllerAs: "list",
link: function (scope, elem, attr) {
return damageEventServices.getSitesDamages()
.then(function (result) {
scope.sitesDamagesList = result.data;
});
}
}
return directive;
}
})();
В функции ссылок в этой строке:
scope.sitesDamagesList = result.data;
Я получаю эту ошибку:
Error: [$compile:nonassign] Expression 'undefined' in attribute 'sitesDamagesList' used with directive 'sitesDamage' is non-assignable!
Любая идея, почему я получаю эту ошибку?
Кажется, вы не передаете необходимые атрибуты при использовании директивы.
<sitesDamage sitesDamagesList="something"></sitesDamage>
Если ваши атрибуты являются необязательными, используйте =?
scope: {
sitesDamagesList:'=?'
...
},
Необязательные атрибуты должны быть помечены как таковые с вопросительным знаком:
=?
или=?attr
. Если выражение привязки не назначается или если атрибут не является необязательным и не существует, исключение ($ compile: nonassign) будет выбрано при обнаружении изменений локального значения, поскольку их невозможно будет синхронизировать вернуться к родительскому охвату