2016-05-26 1 views
0

私は?を使用して、オプションとしてマークされている私のディレクティブの属性を持っています。例えば、a="foo()"インラインオブジェクトとの角度拘束オプションの作成方法</p> <pre><code>scope: { a:'=?' }, </code></pre> <p>これはあなたがすることを選択した場合、あなたが一方向にバインド物事を渡すことができることを意味する必要があります:

私は、インラインオブジェクト、a="{x: 5}"に合格しようとすると、しかし、それはエラーで失敗します。

Error: [$compile:nonassign] Expression '{ x: 5 }' in attribute 'a' used with directive 'dir' is non-assignable!

このケースでは、私の?を無視するように見えます。 ?を尊重したり、エラーを抑制する方法はありますか?ここで

 

はそれの例では、オブジェクトのための機能で作業したが失敗している:あなたは間違っているので

http://jsbin.com/fapodigiza/edit?html,js,console,output

答えて

1

ことがありますか=?オプションの双方向の寝台用ですが、それはあなたの寝台を一方向にしません。このオプションの一方向の結着に活用するために:

angular 
 
.module('app', []) 
 
.directive('dir', function(){ 
 
    return { 
 
     template: 
 
    '<div>a: {{a}} <br />b: {{b}} <br />c: {{c}}</div>', 
 
     scope: { 
 
      a:'<?', 
 
      b:'<?', 
 
      c:'<?' 
 
     }, 
 
     link: function(scope){ 
 
      scope.$root.func = function() { 
 
       return 'rootFunc'; 
 
      } 
 
      
 
      scope.a=1; 
 
      scope.b=1; 
 
      scope.c=1; 
 
     } 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script> 
 

 
<div ng-app="app"> 
 
    <dir 
 
    a="{ x: 5 }" 
 
    b="func()" 
 
    ></dir> 
 
</div>

+0

オプションの双方向の結合は、私が何をしたい確かです。 「オプションの双方向」と「一方通行」の違いは何と思いますか?彼らは同じことに終わらないのですか? –

+0

@BuhBuhこの記事では、https://toddmotto.com/one-way-data-binding-in-angular-1-5/をよく説明しています。双方向データバインディングでは何もできませんリテラル値は代入可能ではないので、あなたの場合と同じように、これを試してみるとエラーがスローされます。一方的な問題は存在しないため、オリジナルの値は決して変更されません。参照にプロパティを追加/削除することはできますが、変更することはできません。 – sielakos

+0

foo()への双方向バインドを試みると、なぜエラーになりませんか?確かにfoo()もunasignableです。 –

関連する問題

 関連する問題