2016-10-18 20 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がブール値である期待できません。そして、ディレクティブの外側で値を変更するので、私は2つの方法でバインドします。

bool管理者が値を変更した場合、問題が解決しないという問題があります。しかし、奇妙なのは、 'Agent.Administrator'を 'Agent'(すべてのオブジェクトで、これだけのフラグではない)に置き換えて完璧に動作し、フラグ 'Administrator'の変更があればそれです。

ブールイン命令にはどのようなアプローチがありますか? ここで奇妙なのは、フラグだけを渡した場合、ディレクティブは変更を知りませんが、すべてのオブジェクトを渡すと、ディレクティブは変更を認識します。

答えて

1

booleanはプリミティブ型なので、booleanを渡すと値がコピーされ、新しいアイテムが作成されます。あなたは一例

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

を入れることができますが、私の指示で、私は スコープを持っている:{ XSLTを:「@」、 administrator: '=' }、 '='はコピーを作成しないで、コミュニケーションの2つの方法を意味します。 – GomuGomuNoRocket

+1

@GomuGomuNoRocket 'Administrator'は、オブジェクトでなければなりません。 Agent.Administratorを使用しないと、親スコープを更新するための適切な参照が得られません –

0

、オブジェクトその真偽値を持つプロパティを持つAdministratorを渡すことができますあなたは、単に

Agent.Administrator=true; 
+0

いいえ!私はそれを試して、動作しません – GomuGomuNoRocket

関連する問題