ディレクティブを介してテキストとして表示するアイテムのリストがあります(ここではすべてが簡略化されており、単なるテキストよりも複雑ですが、原則として同じです)。そのようです:
<body ng:controller="BaseController">
...
<div ng:controller="Controller">
<itemdir ng:repeat="item in items" item="item"></item>
</div>
...
<input ng:model="currentItem" />
</body>
クリックすると、クリックしたアイテムの内容が入力に表示されます。
items
配列であり、currentItem
BaseControllerスコープに属します。
ディレクティブは、BaseControllerスコープのプロパティ(currentItemと呼ばれる)を変更するng:clickを使用してテンプレート(以下を参照)を生成します。ただし、何もしません(入力値は新しい現在のアイテムに変更されません)。Batarang for Chromeでは、currentItemプロパティが表示され、ディレクティブのスコープで変更されていますが、BaseControllerのスコープでは変更されていないことがわかります。
module.directive 'itemdir', () ->
restrict: 'E'
replace: true
template: '<div ng:click="show(item)"></div>'
controller: 'EditorController'
scope:
item: '=item'
link: ($scope, $element, $attrs) ->
update = ->
$element.html($scope.item)
$scope.$watch('item', update)
プロパティを変更するためshow(item)
に、BaseControllerのスコープで定義されているメソッドを試しました。このメソッドはitemパラメーターのみを$scope.currentItemに割り当てます。
show(item)
ng:clickの値をからに変更しても機能しませんcurrentItem = item
これがスコープの問題であることは知っていますが、それでも詳細をすべて把握しているわけではないようです。