https://jsfiddle.net/bngk/7urrobaa/
<div ng-repeat="item in items" ng-init="item.showCb = item.value == 'true' || item.value == 'false'">
<input type="checkbox" ng-if="item.showCb" ng-true-value="true" ng-false-value="false" ng-model="item.value" ng-checked="item.value == 'true'">{{items[$index].value}}</input>
<input type="text" ng-if="!item.showCb" ng-model="item.value"/>
</div>
У меня есть проблема с привязкой флажков в ng-repeat, если по умолчанию у меня мало проверенных значений, когда значения не были должным образом обновлены в модели, и если все по умолчанию не проверены, это работает, но значение обновляется в модели, он содержит логическое значение, хотя я упоминал ng-true-value = "true" и ng-false-value = "false" как строку. Я хочу, чтобы строковое значение присутствовало в модели. Пожалуйста, проверьте мою скрипку. Спасибо за поддержку.
Если вы посмотрите на документацию: https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D, вы увидите ng- * -value принимает выражение. Поэтому, если вы просто положили ng-true-value="true"
, он видит это как выражение.
Если вы поместите ng-true-value=" 'true' "
, то он знает, что это строка.
Но, как упоминалось выше, в вашем коде есть еще несколько ошибок.
<input>
- это самозакрывающийся тег ,ngModel
иngChecked
не должны использоваться вместе.ngInit
не для этого ..