我正在使用 Angular、Express、Node、mySQL 堆栈设置应用程序,但在绑定(bind)复选框的值时遇到问题。 mySQL 将 bool 值存储为一点,因此 json 响应会返回 { done: 1 },但是 Angular 似乎只接受 bool 值或字符串值来绑定(bind)到 true/false。
我有以下模型(我也尝试将 did 定义为 DataTypes.BOOLEAN 但无济于事):
var Todo = sequelize.define('todos', {
text: DataTypes.STRING,
done: DataTypes.INTEGER
})
我的代码将该模型的值设置为:
{"todos":[
{"id":1,"text":"add my first todo","done":1},
{"id":2,"text":"Get the done toggle working","done":0}
]}
最后,在我看来,我有这个代码(我正在使用jade):
li(ng-repeat="todo in todos")
input(type="checkbox", ng-model='todo.done')
{{todo.text}}
但是该复选框未被选中。我尝试添加 ng-true-value 但由于它只接受字符串值,所以我无法将 true 设置为整数。
我怎样才能得到 Angular 来使用数据库存储的位值?
更新:我已经更新了我的节点服务器,将done的值转换为一个运行良好的 bool 值。这是推荐的解决方案还是有更好的方法来实现此目的? (这个解决方案对我来说有点hacky,我觉得必须有一种内置的方法来完成此任务,而无需重写节点中的服务器响应)
todos.retrieveAll(function(todos) {
if(todos) {
todos.forEach(function(todo) {
todo.done = Boolean(todo.done);
});
res.json({
todos: todos
});
} else {
res.send(401, "No todos found");
}
}, function(err) {
res.send(501, "Error retrieveing todos. Message: " + err);
console.log("Error: " + err);
});
最佳答案
<input type="checkbox" ng-model="mymodel.myvalue" ng-true-value="1" ng-false-value="0" value="myvalue">
关于mysql - Angular.js 将复选框值绑定(bind)到 mySQL 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225493/