我在ng-repeater内部有一个指令,应该设置作用域属性。 请查看这里的fiddle: http://jsfiddle.net/paos/CSbRB/
问题在于作用域属性被赋予了像这样的属性值:
<button ng-update1="inputdata.title">click me</button>
该指令应该将作用域属性inputdata.title设置为某个字符串。但是这并没有起作用。app.directive('ngUpdate1', function() {
return function(scope, element, attrs) {
element.bind('click', function() {
scope.$apply(function() {
scope[ attrs.ngUpdate1 ] = "Button 1";
});
});
};
});
然而,直接赋值也可以:
scope["inputdata"]["title"] = "Button 1";
请问如何从指令中使用点符号在名称中设置作用域属性?
附注:此示例中使用重复器是因为它使指令成为子作用域。当它们在子作用域中时,无法编写原始数据类型的作用域属性。这就是为什么我需要一个名称中带有“.”的对象属性。请参见此处的详细说明:AngularJS中作用域的原型/原型继承的细微差别是什么?
谢谢
$apply
的字符串形式,例如:scope.$apply( attrs.ngUpdate1 + '=' + '"Button 1"' );
。 - Josh David Miller$parse
。 - Mark Rajcok