Javascript 指令中未定义范围变量
我正在使用指令,我想在指令中使用范围变量,但它抛出了未定义的错误 我想循环使用固定号码?所以我就去了 这里是我得到的未定义错误 是否有任何其他方法可以避免循环次数过多 HTML:Javascript 指令中未定义范围变量,javascript,angularjs,Javascript,Angularjs,我正在使用指令,我想在指令中使用范围变量,但它抛出了未定义的错误 我想循环使用固定号码?所以我就去了 这里是我得到的未定义错误 是否有任何其他方法可以避免循环次数过多 HTML: 您从未将items属性传递给指令,因此当指令尝试访问它时,它肯定是未定义的。您的my dir标记需要提供属性。尝试: <my-dir items={{items}} .... /> 您能显示您调用此指令的HTML片段吗?@AndrewCounts更新的问题请检查您的HTML是否正确?我没有看到您
您从未将items属性传递给指令,因此当指令尝试访问它时,它肯定是未定义的。您的my dir标记需要提供属性。尝试:
<my-dir
items={{items}}
.... />
您能显示您调用此指令的HTML片段吗?@AndrewCounts更新的问题请检查您的HTML是否正确?我没有看到您在HTML中添加items=。你能确保你的示例代码是正确的吗?如果是,那么解决方案是将items属性传递给标记。$scope.items=['a','b','c'];我不能使用控制器$scope.items=['a','b','c'];inside指令?使用隔离后,该指令无权访问$scope或其他控制器。整个隔离点是确保指令能够独立于其他指令、控制器等所做的操作对变量进行操作。如果不将变量传递给指令,它将无法访问它。而且,最重要的是,scope不是$scope
var app = angular.module('myApp', ['ngAnimate']);
app.controller('MyCtrl', function($scope, $http) {
$scope.items = ['a','b','c'];
});
// add a directive
app.directive("myDir", function() {
return {
restrict: "E",
scope: {
items:"=",
myTitle: "@", // by value
myHeight: "@", // by value
myWidth: "@", // by value
myColor: "@", // by value
myBgcolor: "@", // by value
myWidgetno: "@", // by reference
myCollapseoption: "@", // by reference
save: "&" // event
},
templateUrl:"widget.html",
replace: true,
transclude: false,
link: function (scope, element, attrs) {
// show initial values: by-val members will be undefined
console.log("items is " +scope.items);
// change element just to show we can
element.css("background", attrs.myBgcolor);
element.css("color", attrs.myColor);
element.css("width", attrs.myWidth+'px');
// element.css("height", attrs.myHeight+'px');
}
}
});
<my-dir
items={{items}}
.... />