我收到以下错误:"表达式' {0}'与指令' {1}'一起使用是不可分配的!",如下所示:https://docs.angularjs.org/error/ $ compile / nonassign
编辑:将配置对象移动到范围后,此部分已解析,但模型仍未按预期绑定。 http://plnkr.co/edit/AVs2IW75oWavpsPNDgnb?p=preview
Old plunker:http://plnkr.co/edit/AVs2IW75oWavpsPNDgnb?p=preview (尝试并编辑字段并检查控制台)
我真的不明白这个问题,这就是为什么这个链接无法帮我解决的问题。我正在使用一个指令来绑定数据,以及正被绑定的数据"实际上是指向一项服务。
<multi-edit model="profileService.current" config="{
title: 'Edit profile description',
fields: [
{name: 'Title', model: profileService.current.title, input: true},
{name: 'Description', model: profileService.current.description, textarea: true}
]}">
CLick me
</multi-edit>
所以我试图编辑profileService.current.title,例如,使用ng-model config.fields [0] .model。它可以正确读取数据,但不能写入数据。为了能够写入正确的模型,我需要做什么?
答案 0 :(得分:1)
<强>已更新强>
您应该使用范围模型“config”。
将它放在主控制器中:
$scope.config = {
title: 'Edit profile description',
fields: [{
name: 'Title',
model: 'title',
input: true
}, {
name: 'Description',
model: 'description',
textarea: true
}]
};
然后在主HTML中:
<multi-edit model="profileService.current" config="config">
CLick me
</multi-edit>
然后,在您的指令HTML中:
<li ng-repeat="(key, value) in config.fields">
<input ng-if="value.input" type="text" ng-model="model[config.fields[key].model]" />
<textarea ng-if="value.textarea" type="text" ng-model="model[config.fields[key].model]"></textarea>
</li>
请参阅更新后的plunker。