2

试图做这样的事情:

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范围内。有没有办法将数据传递给指令范围?

4

1 回答 1

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]. 因此,您需要在范围上设置一个属性名称(现有/不存在)。

于 2015-01-12T04:44:47.163 回答