2017-03-17 45 views
1

這對我來說似乎是一個相當直接的問題,但由於某些原因,我無法在多次搜索後找到解決方案。如果它是重複的,請原諒我。如何將模型名稱傳遞給函數並更改其值

問題是我想將一個'模型'傳遞給一個函數並在那裏改變它的值。

所以在HTML我有這樣的:

<input type='button' value='click here' 
     ng-click="CreatePlayer.toggleSidenav(CreatePlayer.someVal)" /> 

與控制器內部的功能是:

CreatePlayer.toggleSidenav = function(target) { } 

現在,如果我console.log(target) 我得到這個模型的當前值。但是,如果我設置了target = 'blah';它不會更新HTML中的值。

有人可以幫我理解我在這裏做錯了什麼嗎?

謝謝。

更新 謝謝大家,你給了閱讀這個問題的時間。 這裏是一個JS提琴,我只是寫了解釋我的問題:https://jsfiddle.net/ibnyusrat/564f7x9p/

的問題是,在控制器內有一個函數,該函數裏面我能夠理解爲一個參數,但我傳遞的值我無法將它設置爲另一個值。我不想爲每種情況創建一個新功能。最好我想使用相同的函數,並且只傳遞一個不同的模型作爲參數來應用我想要處理的值。任何人都可以幫助我理解我做錯了什麼?

謝謝大家提前。

+0

當問一個關於由你的代碼引起的問題的問題,如果你提供了人們可以用來重現問題的代碼,你會得到更好的答案。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – georgeawg

+0

完成 - 提供重現問題所需的所有部件。顯示控制器以及它是如何實例化的:controllerAs語法或vanilla語法? 'CreatePlayer'附加到$ scope還是控制器的'this'上下文? – georgeawg

+0

@georgeawg新增JS小提琴。 –

回答

1

在模板傳遞範圍變量的名稱作爲一個字符串參數:

<div ng-controller="CreatePlayerController as CreatePlayer"> 
    {{CreatePlayer.someVar}} 
    <input type='button' value='click here' 
      ng-click='CreatePlayer.updateValueOf("someVar")' /> 
</div> 

在控制器中,使用property accessor bracket notation更改值:

this.updateValueOf = function updateValueOf(target){ 
    this[target] = 'Some other value.'; 
}; 

DEMO on jsFiddle

+0

完美!這正是解決方案:) –

0

您不需要將值傳遞給函數,因爲您的模型值會自動更改$ scope variable updated。

<input type='button' value='click here'ng-click="CreatePlayer.toggleSidenav()" /> 

在控制器中設置您的值;

$ scope.CreatePlayer.CreatePlayer =「blash」;

+0

問題是我想使用相同的功能來管理多個範圍變量,並對所有這些變量執行操作。請檢查附帶的JS小提琴。 –

+0

HTML change as bellow, 在控制器中設置您的值; CreatePlayer.updateValueOf = function(target){ console.log(CreatePlayer.someVar);創建播放器[target] =「測試」 console.log(CreatePlayer.someVar); } – Dushyantha

相關問題