如何将模型名称传递给函数并更改其值

时间:2017-03-17 02:35:35

标签: javascript angularjs

在我看来这是一个非常直截了当的问题,但由于某种原因,经过多次搜索后我无法找到解决方案。请原谅我是否重复。

问题是我想传递一个'模型'一个函数并在那里改变它的价值。

所以在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/

问题是,在控制器内部有一个函数,在该函数内部,我能够读取作为参数传递的值,但我无法将其设置为其他值。我不想为每种情况创建新功能。我最好使用相同的函数,只传递一个不同的模型作为参数,以应用我想对其值进行的任何操作。谁能帮助我理解我做错了什么?

提前谢谢大家。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您无需将值传递给函数,因为您的模型值会自动更改$ scope变量。

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

在控制器中设置你的值;

$ scope.CreatePlayer.CreatePlayer =&#34; blash&#34;;