0

I have a controller like this. Here in reloadTime function i want to modify the value of a key of the content of this controller.

App.ActivecallsController = Ember.ArrayController.extend({
    activeCalls:[],
    //obj:[],
    deleteCall:function(model){
       var obj = this.findProperty('ID',model.ID);
       App.Cdrglobal.set('active_call',App.Cdrglobal.active_call-1);
       this.removeObject(obj);
    },
    reloadTime:function(){
        var self=this;
        var inter = setInterval(function(){
            $(self.get('content')).each(function(k,v){
               self.set(self.content[k]['duration'],'00');
               clearInterval(inter);
            });
        },1000);
    }
});

the content is

[{"ID":1,"from_number":"1231654","carrier_ip":"123.156.12.1","to_number":"156816548","gw_ip":"156.245.15.12","duration":"12:14"},{"ID":2,"from_number":"1231654","carrier_ip":"123.156.12.1","to_number":"156816548","gw_ip":"156.245.15.12","duration":"15:44"},{"ID":3,"from_number":"1231654","carrier_ip":"123.156.12.1","to_number":"156816548","gw_ip":"156.245.15.12","duration":"52:24"},{"ID":4,"from_number":"1231654","carrier_ip":"123.156.12.1","to_number":"156816548","gw_ip":"156.245.15.12","duration":"52:20"}]

1 Answer 1

2

I don't really understand, what usecase you are trying to implement there, but here is my try. It is really awkward to see the use of jQuery inside a controller. Instead use the collection methods provided by Ember. As you can see i used the forEach method provided by Ember Arrays.

App.ActivecallsController = Ember.ArrayController.extend({
    activeCalls:[],
    //obj:[],
    deleteCall:function(model){
       var obj = this.findProperty('ID',model.ID);
       App.Cdrglobal.set('active_call',App.Cdrglobal.active_call-1);
       this.removeObject(obj);
    },
    reloadTime:function(){
        var self=this;
        var inter = setInterval(function(){
            self.forEach(function(contentItem){
              self.set("duration", "00");
            });
            clearInterval(inter);
        },1000);
    }
});

This was a basic example to get you started on the Ember Collection methods. In your case it would be even easier to use setEach:

App.ActivecallsController = Ember.ArrayController.extend({
    ...
    reloadTime:function(){
        var self=this;
        var inter = setInterval(function(){
            self.setEach("duration", "00");
            clearInterval(inter);
        },1000);
    }
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.