这里是指令定义:
(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!
知道我为什么会收到这个错误吗?
答案 0 :(得分:2)
使用指令时似乎没有传递必需的属性。
<sitesDamage sitesDamagesList="something"></sitesDamage>
如果您的属性是可选的,请使用=?
scope: {
sitesDamagesList:'=?'
...
},
可选属性应使用问号标记:
=?
或=?attr
。如果绑定表达式是不可赋值的,或者如果是 属性不是可选的,不存在,是一个例外 ($ compile:nonassign)将在发现更改时抛出 本地值,因为它们不可能将它们同步回来 父范围