为什么我的指令链接函数中出现Expression'undefined'错误?

时间:2016-07-28 18:30:38

标签: angularjs

这里是指令定义:

  (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!

知道我为什么会收到这个错误吗?

1 个答案:

答案 0 :(得分:2)

使用指令时似乎没有传递必需的属性。

<sitesDamage sitesDamagesList="something"></sitesDamage>

如果您的属性是可选的,请使用=?

scope: {
   sitesDamagesList:'=?'
   ...
},
  

可选属性应使用问号标记:=?   或=?attr。如果绑定表达式是不可赋值的,或者如果是   属性不是可选的,不存在,是一个例外   ($ compile:nonassign)将在发现更改时抛出   本地值,因为它们不可能将它们同步回来   父范围