【问题标题】:Child controller $scope property changes not updating for parent子控制器 $scope 属性更改未为父更新
【发布时间】:2014-06-19 04:19:12
【问题描述】:

我还是 angularjs 和范围的新手,但是我遇到了在子控制器中更改的范围值没有正确影响父值的问题。

一个例子:

我有一个子控制器来监视文本区域的变化。当它们发生时,我设置一个布尔标志来指示文档有未保存的更改。

editor.on('input propertychange', function(){
   $scope.unsaved = true;
}).focus();

但是,这似乎永远不会过滤到父范围。我的根模板有一个锚点:

<a ng-class="{'active': unsaved}" ...

该类在加载时已正确设置,但在 $scope.unsaved 更改时永远不会更改。

如果我设置$scope.$parent.unsaved,它只会在输入事件第二次触发时更改模板。

【问题讨论】:

  • 设置变量后有没有试过$scope.$apply();
  • 是的,我得到的只是一个错误“未定义不是函数”
  • 你能很快做出一个 plunkr 以便我们看到它运行吗?

标签: javascript angularjs


【解决方案1】:

你可以做的一件事就是不要拥有

editor.on('input propertychange', function(){
$scope.unsaved = true;
}).focus();

您可以添加一个ng-change 事件:

<input type="text" ng-model="a" ng-change="madeChange()"/>

并在您的scope 中添加一个新方法:

$scope.madeChange = function() {
    $scope.saved = false;
}

Plunkr here

【讨论】:

    【解决方案2】:

    我已经做了一个工作示例,在控制器之间进行双向数据绑定,并且纯粹在 angularjs 中,没有第 3 方代码

    http://plnkr.co/edit/4DZAncKYS0XvTB7Z4YEQ?p=preview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多