2016-11-10 59 views
-1
//This is a Route 
function doSomething(){ 
var self=this; 
var a,b,c; 
//do something 
reqArray="somevalue"; 
this.store.query("record",{"filter":"[{'api_name':'somevalue','comparator':'somevalue','value':"+reqArray+"}]"}) 
    .then(function(data){      
    //can't access a,b,c or self    
    }); 
} 

在promise函數解析後,我得到需要在then函數中的數據,但我無法訪問then函數之外的任何內容。
編輯更多的澄清:那麼函數內部的變量是window.i希望能夠引用的路線。無法訪問查詢函數內部的自變量

+1

也可以訪問它。不會有任何問題。 –

+0

'this'是'window'有 – Li357

+0

那麼我將如何訪問自己在裏面DoSomething的呢?在功能上 –

回答

-1

如果你真的需要在你的對象所有的增值經銷商,你可以做這樣的事情:

function doSomething(){ 
    var self=this; 
    var a,b,c; 
    //do something 
    // Save value 
    self.a = a; 
    self.b = b; 
    self.c = c; 
    reqArray="somevalue"; 
    this.store.query("record",{"filter":"[{'api_name':'somevalue','comparator':'somevalue','value':"+reqArray+"}]"}).then(
     (function(data){      
      // this = self 
      // this.a = a 
      // ...    
     }).bind(self)); 
} 
+0

爲什麼這將是必要的? – 2016-11-10 18:47:47

+0

我沒有說這是必要的。這只是一個辦法做到這一點,特別是如果你想改變'在功能 – Fefux

-1

你使用灰燼吧?

爲什麼不能你使用箭頭功能將保持這樣的背景下:

.then((data)=> {...}) 
+0

this'但是能夠訪問'了'等應該有無關'this'。 – 2016-11-10 18:47:31

+0

但很明顯,它與'this'有關嗎?! 在有人聲稱原來的崗位'this'是'window'參考 - 這是爲什麼?因爲'then'中的匿名閉包函數將'this'的值改爲'window',所以'this.a'不存在。 ('window.a'將是不確定的),通過使用「胖」箭頭函數'this'將被保留,你將能夠使用'this.a'內。這正是「.bind(self)」所做的 - 它將'this'的上下文綁定到閉包函數中。無論如何,兩者都會工作......除非我失去了一些東西? – mrlion

相關問題