我有两个控制器,第一个控制器中的数据将通过第二个控制器中的点击功能进行更新。我正在使用服务来控制器之间的通信,而不是获得预期的结果。我做错了什么
答案 0 :(得分: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();
最后,您忘记关闭divs
元素的click
,因此点击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>