我正在编写angularjs指令,并从html属性接收属性 然后我为我的指令创建了一个隔离范围,并修改了范围属性的值,但是指令模板没有显示修改后的值。
我在plunker
创建了一个演示。
任何人都可以帮我改变模板价值'测试'改变'?
让我更详细地描述一下我的问题:
我可能有一个指令,并在html中,如:' top'只是一个简单的字符串,而不是任何ngModel,所以我使用' @'在指令中接收它,但是当我在链接中修改它时,模板模型值没有改变,然后我尝试' =',因为它不是ngModel,所以接收的值是未定义的,但是可以在模板{{}}中进行动态更改。
答案 0 :(得分:0)
您正在使用基于属性的链接,这是一种方式。对于双向绑定,请在指令定义中使用=
。类似的东西:
scope: {
title: '=title'
}
更新:我现在收到了你的问题。这里的问题是,基于@
的绑定使父作用域和隔离作用域保持同步。因此,即使您更改了指令中的绑定变量,它也将恢复为原始值。您可以通过向第二个控制台日志添加$ timeout来验证这一点
$timeout(function(){
console.log(scope.title);
})
标题的价值被还原。
您可以选择将标题值复制到链接函数中的新变量中,并将该函数绑定到模板。