尝试做这样的事情:
var data = {some: 'data'}
var subcomponent = $compile('<div component-' + componentName + ' ng-model="'+data+'"></div>')($scope);
$element.find('.container').html( subcomponent[0] );
我收到错误:
Error: [$parse:syntax] Syntax Error: Token 'Object' is unexpected, expecting []] at column 9 of the expression [[object Object]] starting at [Object]]
尝试将此数据提供给link
范围。有没有办法将数据传递到指令范围?
答案 0 :(得分:8)
ng-model
表达式必须是可以设置其值的属性。所以你需要做类似的事情。
$scope.data = {some: 'data'};// Set a property on the scope
/*Bind data to the ng-model*/
var subcomponent = $compile('<div component-' + componentName + ' ng-model="data"></div>')($scope);
在您的情况下,您尝试将一个对象添加到字符串,该对象将对象转换为其字符串表示形式,即[object Object]
。因此,您需要在范围上设置属性名称(现有/不存在)。