指令中的双向绑定,来自服务不可分配的模型

时间:2014-12-04 10:51:37

标签: angularjs angularjs-directive angularjs-service

我收到以下错误:"表达式' {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。它可以正确读取数据,但不能写入数据。为了能够写入正确的模型,我需要做什么?

1 个答案:

答案 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