我正在开发一个世界时间的应用程序。我有一个 ember 模型:Clock
我想time
每秒更新时钟的属性。
现在,我已经start
在时钟中定义了一个方法,负责更新时钟模型的时间属性。
我对此有两个问题:1.如何start
从我的角度调用模型的方法 2.我可以采取更好的方法吗?
这是我的模型、视图、控制器、路由器和模板(如果你感兴趣的话):
模型:
App.Clock = DS.Model.extend({
city: DS.attr('string'),
country: DS.attr('string'),
latitude: DS.attr('string'),
longitude: DS.attr('string'),
time: DS.attr('date'),
order: DS.attr('number'),
start: function() {
var clock = this;
var updateTime = function() {
var timezoneService = Utilities.TimezoneService;
timezoneService.getTimezone(clock.get('latitude'), clock.get('longitude'), function(timezone) {
clock.set('time', timezoneService.getDateTime(timezone.offset));
});
};
updateTime();
window.setInterval(function() {
updateTime();
}, 1000);
}
});
意见:
App.ClocksView = Ember.View.extend({
templateName : 'world_clock/clocks'
});
App.ClocksNewView = Ember.View.extend({
templateName : 'world_clock/new'
});
控制器:
App.ClocksController = Ember.ArrayController.extend({
sortProperties: ['order']
});
App.ClocksNewController = Ember.ObjectController.extend({
city: null,
save: function() {
var cityName = this.get('city');
if(!cityName.trim()){
return;
}
var locationService = Utilities.LocationService.getInstance();
locationService.lookupLocation(cityName, function(location) {
var city = location.city;
var country = location.country;
var lat = location.latitude;
var lon = location.longitude;
if(city && country && lat && lon) {
var clks = App.Clock.find({ city: city });
clks.on('didLoad', function() {
if(clks.get('length') === 0) {
var clock = App.Clock.createRecord({
city: location.city,
country: location.country,
latitude: location.latitude,
longitude: location.longitude,
order: 10
});
clock.save();
}
});
}
});
this.set('city', '');
this.get('target').transitionTo('clocks');
}
});
路由器:
App.Router.map(function() {
this.resource('clocks', { path: '/' }, function() {
this.route('new');
});
});
App.ClocksRoute = Ember.Route.extend({
model: function() {
var locationService = Utilities.LocationService.getInstance();
locationService.getLocation(function(location) {
App.Clock.createRecord({
city: location.city,
country: location.country,
latitude: location.latitude,
longitude: location.longitude,
order: -10
});
});
return App.Clock.find();
}
});
时钟.车把:
{{outlet}}
{{#linkTo "clocks.new"}}Add Clock{{/linkTo}}
<ul>
{{#each controller}}
<li>{{city}}, {{country}} - {{time}}</li>
{{else}}
You have not defined any clock yet.
{{/each}}
</ul>
新的车把:
<form {{action "save" on="submit"}}>
{{view Ember.TextField valueBinding="city" placeholder="City"}}
<button>Save</button>
</form>