我正在尝试将带有变量键的对象传递给 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
如何将范围属性绑定到对象键?