我创建了具有独立作用域的 cusotm 指令。但是当我传递给我的数组类型的指令变量时,我在指令中得到了字符串。
我的指令:
angular.module('my.directives')
.directive('testDirective', [function() {
return {
restrict: 'A',
replace: true,
scope: {
myArray: '@'
},
controller: function($scope) {
alert("Is arr: " + angular.isArray($scope.myArray)); // outputs false
}
};
}
]);
用法:
<div ng-repeat="currentObject in list">
<div test-directive my-array="{{currentObject.arrayOfNumbers}}"></div>
</div>
变量 currentObject.arrayOfNumbers
是类型数组的 100% - 我使用 angular.isArray
方法在我的 Controller 中检查了它,但是当在指令中传递它时我得到只是一个字符串。
即如果
currentObject.arrayOfNumbers = [1,2,3,4]
然后内部指令我有完全相同的字符串:[1,2,3,4]"
最佳答案
那是因为你没有正确使用双向绑定(bind)。您正在通过以下方式设置属性 my-array
的文本:-
<div test-directive my-array="{{currentObject.arrayOfNumbers}}"></div>
将其更改为:-
<div test-directive my-array="currentObject.arrayOfNumbers"></div>
这样对象将正确绑定(bind)到指令中的 2 路绑定(bind)范围变量。
并将 myArray: '@'
更改为 myArray: '='
:-
如果你正在做 myArray:'@'
这是文本绑定(bind)然后做 JSON.parse($scope.myArray)
或 $scope.$eval ($scope.myArray))
关于javascript - 数组作为字符串传递给自定义指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25409497/