我想知道在角度符合指令并插入表达式后,是否有任何方法可以得到原始{{expression}}
。例如,如果有文本,例如Hi, Filip
并且用户点击它,我希望能够显示Hi, {{name}}
的弹出窗口。
现在,我想到的一种方法是通过在角度之前分析DOM(例如在run
期间),然后将表达式作为附加属性保存到父元素。但是,我遇到了各种问题(例如,如果父有其他子元素并且它们被删除,例如使用ng-if,那么我无法可靠地知道哪个表达式属于哪个文本节点)。
由于Angular为这些表达式保留watchers
,因此它必须引用它们所应用的文本节点。有什么方法可以访问这些吗?
第二个问题是,我可以以某种方式获得ng-repeat的原始元素(在编译和转换之前),用于类似的目的(允许用户在运行中修改它)。
我想避免引入新的指令,因为这意味着可以在现有的角度应用程序上工作。
我并不关心性能或安全性(即这不适用于生产应用程序,而是适用于原型设计/调试)。
答案 0 :(得分:0)
使用工厂为您的html表达式提供可重用的逻辑。假设您使用controller as
语法,以便控制器的范围可以为this
。
// factory
function() {
return 'bob';
}];
// in your controller
['somefactory', function(factory) {
this.factoryString = factory.toString(); // => "function() { return 'bob'; }"
this.factory = factory;
}];
// view
<div>hi {{this.factory()}} you were made with {{this.factoryString}}</div>
// interpolated
<div>hi bob, you were made with function() { return 'bob' }</div>
虽然我没有测试任何一个。