按名称从指令访问作用域变量,避免使用eval
access scope variable from directive by name, avoiding using eval
我是angularJs的新手,目前的工作示例(fiddle)感觉不太好。当你试图模糊字段,它应该增加event.times
,目前我做$apply
在第10行,所以我问有没有更好的方法来实现这一点?比如var times = scope.$get(attrs.timesField);
和scope.$apply(function(){ times += 1; });
当一个指令没有使用隔离作用域,而你用一个属性指定了一个作用域属性,并且你想要改变这个属性的值时,使用$parse:
<input custom-field times-field="event.times" ng-model="event.title" type="text">
link: function (scope, element, attrs){
var model = $parse(attrs.timesField);
element.bind('blur', function(){
model.assign(scope, model(scope) + 1);
scope.$apply();
});
}
小提琴
你说得对,这不是正确的做法。找出$watch()函数,特别是在指令中使用它时。
这里不需要使用eval,您可以这样做:
scope.$apply(function(){
scope.event.times++;
});
然而,你必须确保在使用这个指令之前,一个事件对象存在于作用域中,我不认为指令依赖于其他地方设置的数据是好的。
你到底想达到什么目标?
相关文章:
- 使用eval()定义变量显示未定义的错误
- 使用eval()设置全局变量
- 想要将 JSON 字符串传递给 javascript 变量 [ JSON.parse(),eval()] 对我不起作用,
- 当类型存储在变量中时,不使用eval创建对象的实例
- Kinetic.js / Javascript:在不使用 eval() 的情况下调用变量作为属性
- 使用 eval JavaScript 创建动态变量
- 使用eval使用字符串输入按名称将函数分配给变量有什么风险
- JavaScript - 将字符串变量传递给 eval
- 获取 eval 的“窗口”对象,并列出所有变量?Javascript eval inline html.
- 你如何让 javascript eval 返回一个字符串而不是一个变量
- 动态分配 Javascript 变量.[摆脱 eval()]
- 按字面变量名访问变量(eval和likes除外)
- 从“”中运行的代码访问变量;eval”;在Javascript中
- 制作一个不带eval()的动态变量,该变量对应于一个数组
- 如何将多个变量传递到“;eval”;使用“;带有“;
- 将变量传递给xdmp.eval()
- DataBinder.Eval返回的值被解释为变量而不是字符串
- 使用eval将变量分配给方法.否则我该怎么做
- 如何在没有eval的情况下在coffeescript中调用新变量类名
- 我如何解析一个脚本标签,并得到一个变量在它里面,而不使用eval()