Невозможно передать объект со свойством scope в угловую директиву - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь передать объект, имеющий ссылку на область видимости контроллера, в угловую директиву through. В основном объект представляет собой некоторую сложную модель, которая связана с HTML. Моя проблема в том, что он копируется, и когда он попадает в область видимости, он генерирует исключения.

У меня есть пример плунжера (https://next.plnkr.co/edit/0jCSMhWs6fgDEpMW). Исключение (в консоли):

previewer.41a48d826afff4888855.js:14 Error: [ng:cpws] Can't copy! Making copies of Window or Scope instances is not supported.
    at VM838 angular.dew.js:144
    at copyElement (VM838 angular.dew.js:1102)
    at copyRecurse (VM838 angular.dew.js:1072)
    at copyElement (VM838 angular.dew.js:1115)
    at copyRecurse (VM838 angular.dew.js:1072)
    at copyElement (VM838 angular.dew.js:1115)
    at copy (VM838 angular.dew.js:1047)
    at Scope.$digest (VM838 angular.dew.js:19294)
    at Scope.$apply (VM838 angular.dew.js:19655)
    at bootstrapApply (VM838 angular.dew.js:1981)

В основном код выглядит так

import angular from 'angular';
angular.module('plunker', []).controller('MainCtrl', function($scope, $rootScope) {
  $scope.directiveModel = {
    name: 'Kappa',
    thatScope: $rootScope
  };
}).directive('some', function (){
  return {
        scope: {
            details: '=',
        },
        link: function (scope, element, attrs) {
          element.append(scope.details.someProperty.name);
        }
    };
});

Разметка

<!doctype html>

<html>
  <head>
    <link rel="stylesheet" href="lib/style.css">
    <script src="lib/script.js"></script>
  </head>

  <body ng-app="plunker" ng-cloak>
    <div ng-controller="MainCtrl">
      <h1>Hello</h1>
      <p some details='{someProperty: directiveModel}'>Start editing and see your changes reflected here!</p>
    </div>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...