0
我有兩個控制器,第一個控制器中的數據將通過第二個控制器中的點擊功能進行更新。我正在使用服務在控制器之間進行通信,並沒有得到預期的結果。什麼錯我做如何使用服務更新範圍變量
鏈接:http://jsbin.com/hozabigedu/1/
我有兩個控制器,第一個控制器中的數據將通過第二個控制器中的點擊功能進行更新。我正在使用服務在控制器之間進行通信,並沒有得到預期的結果。什麼錯我做如何使用服務更新範圍變量
鏈接:http://jsbin.com/hozabigedu/1/
嗯,你有幾個問題。首先,我將data
更改爲一個對象,並將布爾值作爲屬性,而不是將其本身設爲布爾值。如果您想使用服務共享信息,這是一個很好的做法。最好共享一個對象,以便不同的控制器共享相同的參考。基元對於這種情況是有問題的。因此,這裏的新服務:
app.service('testservice', function(){
var data={}; //Changed here
getDataText = function() {
return data;
};
setDataText= function(val) {
data.text = val; //And changed here
return data;
};
return {
getDataText: getDataText,
setDataText: setDataText
};
});
另一個問題是,你叫錯功能控制器,它應該是getDataText()
:
$scope.inputText = testservice.getDataText();
最後,你忘了關click
元素的divs
,所以點擊2事件冒泡到點擊1事件,因此在隱藏後立即顯示,因此用這個替換第二控制器div:
<div ng-controller="secondController">
<div ng-click="showDiv();"><a href="#">click1</a></div>
<br/>
<br/>
<div ng-click="hideDiv();"><a href="#">click2</a></div>
</div>
</div>