1

我有一组需要在块中修改的 dom 元素。在下面的示例中,“block”指令将在其中添加一个编辑链接。

<div block>
     <div editable="text1">this is editable</div>
     <div editable="text2">this is another editable</div>
</div>

我希望编辑链接填充另一个指令(称为“面板”),每个块内的每个可编辑元素都有一个输入字段。当然,输入字段必须绑定到上述 dom 元素。这些块可以动态地放置在 ng-switch 和/或 ng-repeat 内部,因此我需要考虑不同的范围级别。

具体问题是如何让一个指令修改另一个指令的内容?我只找到了有关如何使两个指令在附加到同一元素时进行通信的示例。

目前我正在尝试在“块”指令的链接函数中使用 jQuery 来获取可编辑元素的列表并使用控制器范围属性将其显示在“面板”中,但我无法做到为 ng-repeat/ng-switch 工作。

如果可能的话,非常感谢关于如何在 AngularJS 中解决这个问题的一般建议!

谢谢

4

2 回答 2

0

我之前也有同样的问题,并且有Fiddle 示例,用于从指令中调用指令。也许它会帮助你。

HTML

<div ng-controller="MyCtrl">
  <div directive-foo></div>
</div>

JS

var app = angular.module('myApp',[]);

app.directive('directiveFoo', function() {
return {
    template: '<div directive-bar="123">bar</div>',
    replace: true,
    controller: function() {
        console.log('in foo ctrl');
        this.isFooAlive = function() {
            return 'Foo is alive and well';
        }
    }
  }
});
app.directive('directiveBar', function() {
  return {
    controller: function() {
        console.log('in bar ctrl');
    },
    require: 'directiveFoo',
    link: function(scope, element, attrs, fooCtrl) {
        console.log(fooCtrl.isFooAlive());
    }
  }
});

function MyCtrl($scope) {
}
于 2013-06-08T21:39:15.667 回答
0

我正在使用控制器范围数组来保存面板中正在编辑的字段的数据,问题是我试图清空数组,使用scope.myarray = []它在子范围中创建一个新数组。

于 2013-06-09T08:01:15.847 回答