我遇到了这个post。一位回答说:
神奇之处主要在于作用域:指令中的声明
定义。有任何范围:{} 将“隔离”范围
来自父母,这意味着它有自己的范围......没有它,它
将使用父级的范围。其余的魔法在范围内
属性:范围:{'internalScopeProperty':
'=externalAttributeName' }... 其中 = 表示双向绑定
设想。如果您将 = 更改为 @ 您会看到它只允许您
将字符串作为属性传递给指令。 & 用于执行
父作用域上下文中的函数。
所以我去了handsontable angular指令“angular-ui-handsontable.full.js”的代码并更改了行
var htOptions = ['data', 'width', 'height', 'rowHeaders', 'colHeaders', 'colWidths', 'columns', 'cells', 'dataSchema', 'contextMenu', 'onSelection', 'onSelectionByProp', 'onBeforeChange', 'onChange', 'onCopyLimit', 'startRows', 'startCols', 'minRows', 'minCols', 'maxRows', 'maxCols', 'minSpareRows', 'minSpareCols', 'multiSelect', 'fillHandle', 'undo', 'outsideClickDeselects', 'enterBeginsEditing', 'enterMoves', 'tabMoves', 'autoWrapRow', 'autoWrapCol', 'copyRowsLimit', 'copyColsLimit', 'currentRowClassName', 'currentColClassName', 'asyncRendering', 'stretchH', 'columnSorting', 'manualColumnMove', 'manualColumnResize', 'fragmentSelection', 'scrollbarModelV', 'scrollbarModelH'];
var scopeDef = {
selectedIndex: '=selectedindex'
};
for (var i = 0, ilen = htOptions.length; i < ilen; i++) {
scopeDef[htOptions[i]] = '=' + htOptions[i].toLowerCase();
}
与
var htOptions = ['data', 'width', 'height', 'rowHeaders', 'colHeaders', 'colWidths', 'columns', 'cells', 'dataSchema', 'contextMenu', 'onSelection', 'onSelectionByProp', 'onBeforeChange', 'onChange', 'onCopyLimit', 'startRows', 'startCols', 'minRows', 'minCols', 'maxRows', 'maxCols', 'minSpareRows', 'minSpareCols', 'multiSelect', 'fillHandle', 'undo', 'outsideClickDeselects', 'enterBeginsEditing', 'enterMoves', 'tabMoves', 'autoWrapRow', 'autoWrapCol', 'copyRowsLimit', 'copyColsLimit', 'currentRowClassName', 'currentColClassName', 'asyncRendering', 'stretchH', 'columnSorting', 'manualColumnMove', 'manualColumnResize', 'fragmentSelection', 'scrollbarModelV', 'scrollbarModelH'];
var scopeDef = {
selectedIndex: '=selectedindex'
};
for (var i = 0, ilen = htOptions.length; i < ilen; i++) {
scopeDef[htOptions[i]] = '@' + htOptions[i].toLowerCase();
}
然后当我使用时
<ui-handsontable minSpareRows="{{cx}}" stretchH="'hybrid'" datarows="item in items">
成功了。我把它放在handsontable github上的请求上。