Почему я получаю выражение «неопределенное» в моей функции директивной ссылки?

0

Здесь определение директивы:

  (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 ответ

2

Кажется, вы не передаете необходимые атрибуты при использовании директивы.

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

Если ваши атрибуты являются необязательными, используйте =?

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

Необязательные атрибуты должны быть помечены как таковые с вопросительным знаком: =? или =?attr. Если выражение привязки не назначается или если атрибут не является необязательным и не существует, исключение ($ compile: nonassign) будет выбрано при обнаружении изменений локального значения, поскольку их невозможно будет синхронизировать вернуться к родительскому охвату

Ещё вопросы

Сообщество Overcoder
Наверх
Меню