2

変数キーを持つオブジェクトを ng-click メソッドに渡そうとしています。通常の JavaScript では、次のようにします。

var x = "fork";
var obj = {};
obj[x] = "three points" //{ fork: "three points" }

通常、ng-click 経由でオブジェクトを送信するには、オブジェクト リテラルを引数として設定します。

//in controller
$scope.val = "red";
//in view
<button ng-click="click( { item: val} )"></button> 
//output is { item: "red" }

しかし、引数のオブジェクトのキーをスコープ プロパティにバインドしたい場合はどうでしょうか。

//in controller
$scope.key = 29845;
//in view
<button ng-click="click( { {{key}}: 456 } )"></button>
//should output { 29845: 456 }

これを試みると、構文エラーが発生します。ただし、この同じ構文を ui.bootstrap typeahead のtypeahead-on-selectメソッドで使用でき、機能します...理由はわかりません。

<input type="text"     
       typeahead="i for i in data"
       typeahead-on-select="select( { {{i}}: 'something' } )"
       class="typeahead" />

http://plnkr.co/edit/EfSvbP8fXBLoZhr8eWG5

スコープ プロパティをオブジェクト キーにバインドするにはどうすればよいですか?

4

1 に答える 1