В чем разница между <и @ областью выделения в angularJS? - PullRequest
0 голосов
/ 26 апреля 2018

Приложение My Rails имеет другую организацию со своей страницей профиля со своей собственной таблицей статистики инвентаризации.

Ниже приведена часть app / views / organization / show.html.erb

<div ng-app="cc-app" class="card-body overflow-hidden">
    //codes here
    <inventory-stats orgid="<%= @organization.id %>"> </inventory-stats>
    //codes here
</div>

Я сделал директиву, чтобы показать статистику инвентаризации и передать оргиду, т.е. идентификатор организации с изоляцией области действия (одностороннее связывание), чтобы получить статистику инвентаризации организации.Насколько я знаю, у меня есть два способа определения объекта области действия для односторонней привязки в app / assets / javascripts / angular / directives / inventoryStats.directive.js , а именно:

Любой

scope: {
    orgid: '@'
    }

Или

scope: {
    orgid: '<'
    }

Но, похоже, работает только @.С @, $ scope.orgid возвращает значения идентификатора организации в директиве scope.И если я передам orgid с <неопределено.Я прочитал <a href="https://docs.angularjs.org/api/ng/service/$compile#-scope-" rel="nofollow noreferrer"> документацию по области действия директивы и до сих пор не знаю, почему <не работает.</p>

My AngularJS: AngularJS v1.6.10

1 Ответ

0 голосов
/ 26 апреля 2018

angular.module('app', [])
  .directive('myDirective', function() {
    return {
      scope: {
        param1: '@',
        param2: '<'
      },
      template: '<div>param1= {{param1|json}}
param2= {{param2|json}}
'};})
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.10/angular.js"></script>
<div ng-app="app" ng-init="scopeValue=[1,2,3]">
  <my-directive param1="string-value" param2="scopeValue"></my-directive>
</div>

@ используется для передачи интерполяции только в виде строки .

< - это односторонняя привязка данных от родителя к потомку, вы можете передать с ней любое значение данных, которое вам нужно.

...