0

请注意,在 AJAX 请求完成之前,此 getter-setter 保持未定义的值。

var users = m.prop([]); //default value
var doSomething = function() { /*...*/ }
m.request({method: "GET", url: "/user"}).then(users).then(doSomething)

但是下面的代码没有使用m.prop。为什么?

您是否以不同的方式设置默认值?

//model
var User = {}

User.listEven = function() {
    return m.request({method: "GET", url: "/user"}).then(function(list) {
        return list.filter(function(user) {return user.id % 2 == 0});
    });
}

//controller
var controller = function() {
    return {users: User.listEven()}
}

如果在上面的代码中没问题,在下面没用?

var doSomething = function() { /*...*/ }
m.request({method: "GET", url: "/user"}).then(doSomething)

https://lhorie.github.io/mithril/mithril.request.html

4

1 回答 1

1

listEven代码有效,因为两者都m.prop返回m.requesta GetterSetter,但是在使用时m.requestGetterSetter填充从 promise 返回的值。这很方便。

在最后一个例子中没有GetterSetter涉及,这是一个简单的 Promise 用法。因此,所有三个示例都可以正常工作。要决定哪一个是最好的,您必须查看您的具体情况。

于 2015-12-21T22:36:25.287 回答