【问题标题】:Directive not updated after factory call工厂调用后指令未更新
【发布时间】:2014-06-13 19:38:22
【问题描述】:

我有一个自定义指令,它有一个名为 content 的属性。我正在尝试通过名为 x 的外部控制器范围变量将数据传递给该指令的属性。通过在控制器开始时将 x 设置为“xyz”,这似乎可以正常工作,但是当我调用工厂以提取值以更新 x 变量时,数据不会反映在指令中。我可以看到 $scope.x 被设置为控制器内工厂的返回值,但它并没有更新指令。

我似乎在某处遗漏了什么。我猜这是一个范围问题,但我只是没有看到它。我试图将我的问题简化为 Plunker (http://plnkr.co/edit/wsWzSTJ9VDprfTaToeHv)。

有什么想法吗?

谢谢 克里斯

【问题讨论】:

  • 只需将 $watch 添加到指令的控制器中,它是否适用于您的用例? updated plunker

标签: angularjs angularjs-directive angularjs-scope


【解决方案1】:

cmets 中提到的基本问题是指令控制器中缺少 $watch。控制器不“知道”content 变量已更改。

所以在控制器(指令控制器!)中添加一个 $watch 可以解决这个问题:

$scope.$watch(function(){return $scope.content}, function(){
  $scope.text = $scope.content
})

一个工作的demo

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多