Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使一个指令修改另一个指令的内容?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何使一个指令修改另一个指令的内容?

Javascript 如何使一个指令修改另一个指令的内容?,javascript,angularjs,Javascript,Angularjs,我有一组dom元素需要在块中修改。在下面的示例中,“block”指令将在其中添加一个编辑链接 <div block> <div editable="text1">this is editable</div> <div editable="text2">this is another editable</div> </div> 这是可编辑的 这是另一个可编辑的 我希望编辑链接填充另一个指令(称为“pa

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

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

这是可编辑的
这是另一个可编辑的
我希望编辑链接填充另一个指令(称为“panel”),块内每个可编辑元素有一个输入字段。当然,输入字段必须绑定到上述dom元素。块可以被缩进放置在NG开关和/或NG重复的内部,所以我需要考虑不同的范围级别。

具体的问题是,如何使一条指令修改另一条指令的内容?我只找到了如何使两个指令在连接到同一元素时进行通信的示例

目前,我正试图在“block”指令的链接函数中使用jQuery来获取可编辑元素的列表,并使用controller scope属性将其显示在“panel”中,但对于ng repeat/ng开关,我无法使其工作

如果可能的话,我们非常感谢您就如何在AngularJS中处理此问题提供一般性建议


谢谢你

我以前也问过同样的问题,从指令中调用指令。也许对你有帮助

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) {
}
var-app=angular.module('myApp',[]);
app.directive('directiveFoo',function(){
返回{
模板:'bar',
替换:正确,
控制器:函数(){
log('in foo-ctrl');
this.isFooAlive=函数(){
返回“Foo还活着,很好”;
}
}
}
});
app.directive('directiveBar',function(){
返回{
控制器:函数(){
log('in bar ctrl');
},
要求:'directiveFoo',
链接:函数(范围、元素、属性、fooCtrl){
log(fooCtrl.isFooAlive());
}
}
});
函数MyCtrl($scope){
}

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

当然,问题是(至少是具体的问题)仅与如何显示输入字段有关。可编辑内容由模型管理,并且已绑定到可编辑指令。我只需要创建字段在面板中编辑它。我很好奇block/panel指令应该做什么,特别是。它有数据或属性吗?如果它只有display,那么为什么不拥有一个“block”css类呢?如果你举一个例子,说明你正在努力做什么,或者你已经走了多远,即使它正在破裂,我们可能会给出更好的答案;请使用jsfiddle或plunker之类的工具更新您的问题。面板需要显示block指令中每个可编辑元素的输入字段。然而,我已经决定阅读这些是嵌套指令,我需要在两个完全独立的指令之间进行通信。