我是Ember.js的新手并且在一项简单的任务上继续奋斗。我的目标是在触发操作后实现页面内容的实时更新。在这种情况下,关于路径 - 控制器 - 模型关系的Ember逻辑,我很遗憾。
所以我的template.hbs
就像:
<h1>{{model.somedata}}</h1>
<button {{action 'getContent'}}>Get Content</button>
我的控制器接受来自用户表单的一些参数并进行AJAX调用:
export default Ember.Controller.extend({
somedata: 'hello',
actions: {
getContent: function () {
var self = this;
Ember.$.ajax({
// ... standart call with some query data
success: function(result) {
self.set('somedata', result);
}
});
}
}
});
我的路径模型仅返回控制器参数,因此如果我在控制器属性更新时正确,则必须有一个简单的步骤来更新当前模型并显示对模板的所有更改。
export default Ember.Route.extend({
model: function(params) {
return params;
}
});
你们能否告诉我这个过程是如何定期在Ember中建立的?
答案 0 :(得分:1)
是的,这有点令人困惑,这就是我对它的看法......
First Ember建立路线。
该路线有多个挂钩,用于获取和处理模型(即beforeModel,model,afterModel)。 Ember将始终将这些视为其自然观念的一部分。
还有一个setupController挂钩,将在所有模型挂钩后触发。作为setupController挂钩的一部分,将创建控制器并将模型传递给控制器。
一旦发生这种情况,我发现有必要将模型视为不再是路线的一部分,而是控制器。
答案 1 :(得分:1)
您正在寻找self.set('model.somedata', results)
。
您现在的代码是在控制器上设置somedata
属性,这不会对任何事情产生影响。
答案 2 :(得分:0)
将弃用控制器。所以IMO 不使用控制器。
处理您路线中的行动。如果将值绑定到模型钩子返回的对象,则在更新值时将更新数据和页面。
export default Ember.Route.extend({
somedata: null,
model: function(params) {
return {
params: params,
somedata: this.get('somedata')
};
},
actions: {
getContent: function () {
...
var _this = this;
...
success: function(result) {
_this.set('somedata', result);
}
}
}
});