2016-10-03 74 views
0

我有一个名为'bool'的值为100的绑定数据变量。当我单击复选框时,我希望通过将值增加50来增加值。我究竟做错了什么?角度,用复选框更改模型值

<div ng-app="app"> 
    <h3 ng-model="bool = 100">BOOL</h3> 
    <input type="checkbox" ng-model="add = 50"/> 
    <div>{{bool + add}}</div> 
</div> 

任何帮助将不胜感激,

谢谢:)

+0

难道你有这个程序控制器?你能告诉我们你的Javascript代码 - 你的控制器吗? – ishmaelMakitla

+0

我有一个空的控制器,我想知道这是否可能纯粹通过指令计算,不需要数据去任何地方 –

+0

我建议你尝试使用控制器。 – ishmaelMakitla

回答

1

ng-model不能是表达式。如果您需要指定默认值,则应使用ng-init

另外,复选框的值为true(1)或false(0)。因此,尽管{{bool + add}}最初将显示150,但只要您选中或取消选中该复选框,它将显示100101,因为现在add取决于检查的状态为0或1。

angular.module('app', []);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 
    <div ng-app="app"> 
 
     <h3 ng-model="bool" ng-init="bool = 100; additional = 0">BOOL</h3> 
 
     <input type="checkbox" ng-model="add" ng-change="additional = add * 50"/> 
 
     <div>{{bool + additional}}</div> 
 
    </div>

+0

嗨@Lex,是的,我试过了。它的作用是将值初始化为150,然后在复选框中单击将其设置为101(真实值为1)并在100和101之间切换开关。 –

+0

我需要的是初始值为100,并且在复选框单击,价值切换到150 –

+0

我不知道你为什么要在HTML中做到这一点,但我已经更新了我的答案,以显示一种可能的方法。正如ishmaelMakitla所建议的那样,这种逻辑真的属于控制器。 – Lex