将ng-click参数对象键绑定到范围属性?

时间:2015-07-16 16:54:31

标签: angularjs ui.bootstrap

我试图将带有变量键的对象传递给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

如何将范围属性绑定到对象键?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

<button ng-click="temp={};temp[key]=456;click(temp)"></button>

请参阅http://plnkr.co/edit/NfH3xNUXtBROiu9olHVE?p=preview

虽然它会在范围内添加临时变量。