如何使用服务更新范围变量

时间:2015-04-06 10:13:34

标签: angularjs angular-services

我有两个控制器,第一个控制器中的数据将通过第二个控制器中的点击功能进行更新。我正在使用服务来控制器之间的通信,而不是获得预期的结果。我做错了什么

link:http://jsbin.com/hozabigedu/1/

1 个答案:

答案 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>