2014-05-05 56 views
0

我想將一個控制器的計算屬性的值設置爲另一個控制器。從另一個控制器設置計算屬性

var BusinessOwner = Ember.ObjectController.extend({ 
    actions: { 
     save: function(){ 
      var self = this; 
      return Ember.$.ajax({ 

      }).then(function(){ 
       var ownerShow = self.store.getById('application',100); 
       ownerShow.get('ownerGeneral'); 
       ownerShow.set('ownerGeneral', 'complete') 

       Ember.set(self, 'controllers.collectinfo.ownerGeneral','completed'); 

       //self.set('controllers.collectinfo.ownerGeneral', "completed"); 
      }); 
     } 
    } 

我已經嘗試了幾次不同的嘗試來設置這個屬性,但已經證明不成功。如果我使用自設置,我必須使用Ember.set()的錯誤。如果我使用Ember.set()我得到錯誤collectinfo必須是全局的,如果沒有給出obj。

感謝所有幫助

編輯: 感謝您看這個。是的,我包含需求:'collectinfo'我仍然收到Ember.set()需要用來設置對象的錯誤

回答

0

我假設你的控制器聲明一個needs屬性的值爲「collectInfo」?那麼它應該這樣工作:

var BusinessOwner = Ember.ObjectController.extend({ 
    needs : ['collectInfo'], 
    actions: { 
     save: function(){ 
      var collectinfoController = this.get('controllers.collectinfo'); 
      return Ember.$.ajax({ 

      }).then(function(){ 
       var ownerShow = self.store.getById('application',100); 
       ownerShow.get('ownerGeneral'); 
       ownerShow.set('ownerGeneral', 'complete') 

       collectinfoController.set('ownerGeneral','completed'); 
      }); 
     } 
    } 
+0

謝謝,我仍然得到相同的error.Ember.set()需要用來設置對象 – Bungdaddy

1

您還需要在控制器中提供needs數組。

var BusinessOwner = Ember.ObjectController.extend({ 
    needs: 'collectinfo' 
    actions: { 
     save: function(){ 
      var self = this; 
      return Ember.$.ajax({ 

      }).then(function(){ 
       var ownerShow = self.store.getById('application',100); 
       ownerShow.get('ownerGeneral'); 
       ownerShow.set('ownerGeneral', 'complete') 

       Ember.set(self, 'controllers.collectinfo.ownerGeneral','completed'); 

       //self.set('controllers.collectinfo.ownerGeneral', "completed"); 
      }); 
     } 
    } 

編碼明智我建議你創建一個你想從其他控制器訪問自己的計算屬性。所以代碼就是這樣。

var BusinessOwner = Ember.ObjectController.extend({ 
     needs: 'collectinfo', 
     ownerGeneral: Ember.computed.alias('controllers.collectinfo.ownerGeneral') 
     actions: { 
      save: function(){ 
       var self = this; 
       return Ember.$.ajax({ 

       }).then(function(){ 
        var ownerShow = self.store.getById('application',100); 
        ownerShow.get('ownerGeneral'); 
        ownerShow.set('ownerGeneral', 'complete') 

        Ember.set(self, 'ownerGeneral','completed'); 

        //self.set('controllers.collectinfo.ownerGeneral', "completed"); 
       }); 
      } 
     } 
1

您可以設置控制器之間的依賴與需要財產控制器,它在Ember Guide真實記錄。

App.IndexController = Em.Controller.extend({ 
    needs: 'application', 
    message: 'hi!', 
    actions: { 
    changeApplicationMessage: function() { 
     this.set('controllers.application.message', 'good bye'); 
    }, 
    changeMessage: function(){ 
     this.set('message', 'bye'); 
    } 
    } 
}); 

從屬控制器屬性爲入店控制器在{{controllers.controllerName.propertyName}}

演示:http://emberjs.jsbin.com/vevet/1/edit

0

除了別人說關於 「需求」,只是聲明快捷變量set和get:

var get = Ember.get; 
var set = Ember.set; 

,然後用它們像這樣:

set(object, 'property', 'value-to-set-property-to'); 
相關問題