在我看来这是一个非常直截了当的问题,但由于某种原因,经过多次搜索后我无法找到解决方案。请原谅我是否重复。
问题是我想传递一个'模型'一个函数并在那里改变它的价值。
所以在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 :(得分: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.';
};
答案 1 :(得分:0)
您无需将值传递给函数,因为您的模型值会自动更改$ scope变量。
<input type='button' value='click here'ng-click="CreatePlayer.toggleSidenav()" />
在控制器中设置你的值;
$ scope.CreatePlayer.CreatePlayer =&#34; blash&#34;;