如何根据表达式的结果默认Ember模型的值?

时间:2014-04-11 22:36:45

标签: ember.js model expression default

以下代码提供错误说:     未捕获的TypeError:undefined不是函数

有人可以帮我正确地构建这个,以便我可以根据这个表达式默认一个值吗?

,defaultPersonType: function defaultPersonType() {
        console.log(this)
        var people = this.get("store").all("person").content
            ,primaryFound = false
            ,spouseFound = false
            ,dependantFound = false
            ,defaultType = "CHILD"
        for (var i = 0; i < people.length; i++) {
            switch(people.get("personType")) {
                case "PRIMARY":
                    primaryFound = true
                    break
                case "SPOUSE":
                    spouseFound = true
                    break
                case "UNMARRIED_PARTNER":
                    spouseFound = true
                    break
                default:
                    dependantFound = true
                    break

            }
            if (!primaryFound) {
                defaultType = "PRIMARY"
            }
            if (!!dependantFound) {
                defaultType = "CHILD"
            }
            if (!spouseFound) {
                defaultType = "SPOUSE"
            }
        }
        return DS.attr('string', {defaultValue: function() {return defaultType}})
    }
    ,personType: (function() {
        return this.defaultPersonType()
    }())

2 个答案:

答案 0 :(得分:0)

好吧,你的

this

在匿名函数中是错误的。所以,这样做:

function() { return this.defaultPersonType(); }.bind(this)())

答案 1 :(得分:0)

我认为实现此逻辑的最佳位置是路径的模型钩子。