Angular:在编译期间将数据传递给指令

时间:2015-01-12 04:42:00

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-model

尝试做这样的事情:

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

1 个答案:

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