mysql - Angular.js 将复选框值绑定(bind)到 mySQL 位

标签 mysql angularjs data-binding

我正在使用 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/

相关文章:

wpf - VS2017 : An Error Occured while finding the resource dictionary

javascript - 如何使用子上下文可访问的自定义属性扩展模板绑定(bind)语法?

Mysql比较三个日期时间字段

javascript - 使用Nodejs + express登录注册,用户数据未定义

javascript - Angular 形按钮定制类型

unit-testing - 我如何测试 AngularJS 提供者?

apache-flex - 将变量的值绑定(bind)到文本输入

javascript - 自动保存文本区域花费的时间太长

php - 模态不在 php (CodeIgniter) 中使用 javascript 加载

javascript - 使用 angularjs 在新页面中查看所选行的详细信息