我有一个 javascript 网格库 slickgrid 的指令。
http://plnkr.co/edit/KWZ9i767ycz49hZZGswB?p=preview
我想要做的是将选定的行传回控制器。所以我想使用隔离范围(使用'=')来获得控制器和指令之间的双向绑定。
如果我在没有任何范围声明的情况下定义指令,一切正常:
<slickgrid id="myGrid" data="names" selected-item="selectedItem"></slickgrid>
app.directive('slickgrid', function() {
return {
restrict: 'E',
replace: true,
//scope: {
// selectedItem: '='
//},
template: '<div></div>',
link: function($scope, element, attrs) {
...
var redraw = function(newScopeData) {
grid.setData(newScopeData);
grid.render();
};
$scope.$watch(attrs.data, redraw, true);
但是,如果我取消注释上面的行(app.js 中的第 19-21 行),它看起来就像 $scope.$watch 正在监视 attrs.data 对象正在调用重绘,但 attrs.data 被传入未定义。
我的分析可能是错误的,但我不确定为什么定义范围会导致这种情况。有人可以解释为什么会这样吗?
.内森。