angularjs指令更改范围属性值

时间:2015-03-24 15:11:58

标签: angularjs angularjs-directive angularjs-scope

我正在编写angularjs指令,并从html属性接收属性 然后我为我的指令创建了一个隔离范围,并修改了范围属性的值,但是指令模板没有显示修改后的值。

我在plunker创建了一个演示。

任何人都可以帮我改变模板价值'测试'改变'?

让我更详细地描述一下我的问题:
我可能有一个指令,并在html中,如:' top'只是一个简单的字符串,而不是任何ngModel,所以我使用' @'在指令中接收它,但是当我在链接中修改它时,模板模型值没有改变,然后我尝试' =',因为它不是ngModel,所以接收的值是未定义的,但是可以在模板{{}}中进行动态更改。

1 个答案:

答案 0 :(得分:0)

您正在使用基于属性的链接,这是一种方式。对于双向绑定,请在指令定义中使用=。类似的东西:

scope: {
      title: '=title'
}

更新:我现在收到了你的问题。这里的问题是,基于@的绑定使父作用域和隔离作用域保持同步。因此,即使您更改了指令中的绑定变量,它也将恢复为原始值。您可以通过向第二个控制台日志添加$ timeout来验证这一点

  $timeout(function(){
        console.log(scope.title);  
      })

标题的价值被还原。

您可以选择将标题值复制到链接函数中的新变量中,并将该函数绑定到模板。