ngModel:我的angularjs应用程序中的constexpr错误,但jsfiddle上的相同代码是好的

JoD*_*iii 1 checkbox version angularjs

我的应用程序中有一个非常惊讶的错误:

<div class="ui toggle checkbox">
    <input type="checkbox" ng-model="pimp.init.carte.choice_1" ng-checked="pimp.init.carte.choice_1 == 'online'" ng-true-value="online" ng-false-value="offline" />
    <label>OSM 
        <span ng-show="pimp.init.carte.choice_1 == 'online'">en ligne</span>
        <span ng-show="pimp.init.carte.choice_1 == 'offline'">hors ligne</span>
    </label>{{pimp.init.carte.choice_1}}
</div>
Run Code Online (Sandbox Code Playgroud)

在控制器中,pimp.init.carte.choice_1默认设置为"在线".

我有这个错误:

ngModel:constexpr] http://errors.angularjs.org/1.3.11/ngModel/constexpr?p0=ngTrueValue&p1=online

我试图在一个jsfiddle中重复这个行为,但这里似乎没问题,所以我不明白为什么它在我的应用程序中不起作用.

怎么了 ?

tas*_*ATT 11

您在应用中使用Angular 1.3.11,在示例中使用1.2.1.

由于1.3.0-beta.15中引入了以下更改,您会收到错误:

ngTrueValue和ngFalseValue现在支持解析器表达式,解析器确定这些表达式是常量值.

突然变化:

以前,这些属性始终被视为字符串.但是,它们现在被解析为表达式,并且如果表达式是非常量则抛出它们.

要将非常量字符串转换为常量表达式,只需将它们包含在一对额外的引号中,如下所示:

<input type="checkbox" ng-model="..." ng-true-value="'truthyValue'">
Run Code Online (Sandbox Code Playgroud)

在您的情况下,更改以下内容:

ng-true-value="online" ng-false-value="offline"
Run Code Online (Sandbox Code Playgroud)

至:

ng-true-value="'online'" ng-false-value="'offline'"
Run Code Online (Sandbox Code Playgroud)

演示: http ://plnkr.co/edit/yvTlKwa0NlWZoyWXWVXH?p = preview