2016-06-08 64 views
0

我開發了一個搜索欄,它在完成搜索時觸發事件。事件偵聽器是一個控制器,asigns從搜索欄的屬性,該屬性綁定到視圖中的{{ controller.node.name }}使用控制器屬性觸發的事件後視圖不更新

app.controller('Controller', function($rootScope){ 
    this.node = undefined; 

    $rootScope.$on('searchEvent', function(event, info) { 
    $timeout(function(){ 
     $rootScope.$apply(function(){ 
     set(info); 
     }); 
    }, 0); 
    }); 

    function set(c) { 
    this.node = c; 
    } 
}); 

形式我讀到$scope.$apply和使用他們提供的解決方案通過了信息,但是這些例子使用$scope.node而不是controller.attribute,因爲我正在做。

我試過$scope.node,它的工作原理是,問題是,爲什麼它沒有使用控制器屬性?

+0

相同的變量

app.controller('Controller', function($rootScope){ var self = this; self.node = undefined; function set(c) { self.node = c; } }); 

更多信息你甲肝e jsfiddle? – jtmingus

回答

0

因爲this的值由函數的調用方式決定。

set被稱爲this具有不同的值,這樣你就不會真正編輯相同node,而是你在這個新的this

創建node變量如果你使用一個變量,而不是this,你確保你所引用的this

相關問題