作用域问题:Angular指令的多个实例具有隔离作用域
Scope issues with multiple instances of Angular Directives with isolate scope
我试图创建一个表指令,让创建表添加,删除和编辑选项。
HTML// User table
<atable config="userTable"></atable>
// Age table
<atable config="ageTable"></atable>
JS(控制器)
var userData = [{
un: 'user1',
pwd: 'password',
ph: '500000000',
id: 2
},..];
$scope.userTable = {
cols: ['Username', 'Password', 'Contact'],
rows: userData,
deleteRow: true,
deleteHandler: function (id) {
console.log(id);
for (var i = 0; i < userData.length; i++) {
if (userData[i].id == id) {
userData.splice(i, 1);
break;
}
}
},..
};
同样,我为第二个表创建了ageData和ageTable配置。
JS(指令)
.directive("atable", function () {
return {
restrict: "E",
scope: {
config: '='
},
template: 'Look at fiddle'
controller: function ($scope) {
$scope.deleteRow = function (row) {
$scope.config.currEditRow = angular.copy(row);
}
...
}
}
})
小提琴来了。
Delete row适用于第一个表,但不适用于第二个实例。我认为当试图删除ageTable中的某些东西时,正在调用userTable的deleteHandler。我猜这是一个范围问题,但不能弄清楚。
我认为问题在于您的模板包含模态定义,并且两者使用相同的ID。因此,第二个表中的删除按钮实际上显示了第一个表的删除对话框(ID为'delPane')。
看一看从javascript中显示模态的服务,比如https://angular-ui.github.io/bootstrap/(参见模态部分)。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Angularjs:修改js中的作用域,稍后在页面中使用
- 同一指令的多个角度实例,作用域不是孤立的
- 如何创建作用域的动态、基于实例的对象文字
- 作用域变量正在创建引用而不是新实例
- 在dojo的addOnLoad方法中创建实例没有全局作用域
- 将parent's作用域传递给子实例
- 作用域问题:Angular指令的多个实例具有隔离作用域
- 可以共享作用域和访问实例的私有原型方法
- 同一指令的多个角度实例,作用域不是孤立的,作用域相同