2016-10-18 2 views
0

내 HTML에서이 지시어`각도 지시 동작은

var xmlToHtml = function() { 
    return { 
     restrict: "A", 
     templateUrl: 'Components/XML2Html/views/XML2Html.html', 
     controllerAs: 'XmlToHtmlController', 
     bindToController: true, 
     scope: { 
      xslt: '@', 
      administrator: '=' 
     }, 
     link: function() { 
     }, 
     controller: function ($scope, $timeout, $sce, $http, $filter, $timeout, $window) { 
      $scope.administrator = this.administrator; 
      $scope.$watch('administrator', function (newVal, oldVal) { 
       console.log($scope.administrator); 
      }, true); 
     }, 
    }; 
} 
xmlToHtml.$inject = []; 

하고 있습니다

<div xml-to-html xslt="test.xslt" administrator="Agent.Administrator"></div> 

범위 Agent.Administrator은 부울입니다 예상되지 않음. 그리고 지시어 바깥에서 값을 변경하십시오. 그래서 저는 두 가지 방법으로 바인딩해야합니다.

문제는 작동하지 않습니다. bool 관리자가 값을 변경하면 지시문에 아무 것도 알려지지 않습니다. 하지만 이상한 점은 'Agent.Administrator'를 'Agent'(모든 객체와 이것의 한 가지 플래그가 아니라)로 대체하면 완벽하게 작동하고 플래그 'Administrator'의 변경 사항을 잡는 것입니다.

부울 지시어에 대한 다른 접근법이 있습니까? 이상하게 여기는 것은 플래그 만 전달하면 지시어는 변경 사항을 알지 못하지만 모든 객체를 전달하면 지시문에 변경 사항을 알 수 있습니다.

답변

1

boolean이 기본 유형이므로 boolean을 전달하면 값이 복사되고 새 항목이 생깁니다. 당신은 예를

Agent.Administrator = { isAdmin: false }; 
+0

을 넣을 수 있지만, 내 지시에 내가 범위가 { XSLT를 '@', 관리자 : '=' } 기호 '='는 사본을 만들지는 않지만 커뮤니 케이 티브의 두 가지 방법을 의미합니다. – GomuGomuNoRocket

+1

@GomuGomuNoRocket'Administrator'는 반드시 객체 여야합니다. Agent.Administrator를 사용하지 않으면 상위 범위를 업데이트하기위한 적절한 참조를 얻지 못합니다. –

0

, 객체 그 부울 값을 가진 속성이 Administrator를 전달할 수 있습니다 당신은 단순히

Agent.Administrator=true; 
+0

아니요! 나는 그것을 시도하고, 작동하지 않는다. – GomuGomuNoRocket