带隔离作用域的Angularjs指令不会触发指令外的DOM更改
Angularjs Directive with Isolated Scope doesn't trigger DOM change outside of directive
我正在用孤立的作用域玩angular指令。我刚刚遇到了一个有趣的情况。当我从局部作用域调用一个函数时,它改变了$scope变量的内容,这不会影响DOM。在我的示例中,我向$作用域添加了一个新元素。这不会触发ngRepeat,所以应该呈现ngRepeat项的DOM的这部分不受影响。
指令代码:
function addItem() {
scope.add();
items.push({
name: 'New Directive Customer'
});
scope.$broadcast("refresh");
render();
}
...
return {
restrict: 'EA',
scope: {
datasource: '=',
add: '&',
},
link: link
};
本地功能代码:
$scope.addCustomer = function() {
counter++;
$scope.customers.push({
name: 'New Customer' + counter,
street: counter + ' Cedar Point St.'
});
alert($scope.customers.length);
};
DOM注释部分:
<isolate-scope-with-controller datasource="customers" add="addCustomer()"></isolate-scope-with-controller>
<hr />
<div>
<ul>
<li ng-repeat="customer in customers">{{customer.name}}</li>
</ul>
</div>
alert()
将显示$scope.customers
在每次点击按钮后更大,但ngRepeat不会在DOM上工作。
完整代码:http://plnkr.co/edit/8tUzKbKxK0twJsB6i104
我的问题是,这是可能的触发DOM变化从这种类型的指令以某种方式?
Thanks in advance
您的plunkr仅在删除指令的点击回调中的event. srelement .id检查后为我工作。
function addItem() {
//Call external function passed in with &
scope.add();
//Add new customer to the local collection
items.push({
name: 'New Directive Customer'
});
scope.$broadcast("refresh");
render();
}
在控制器中必须使用$scope。
$scope.addCustomer = function() {
$scope.$apply(function(){
counter++;
$scope.customers.push({
name: 'New Customer' + counter,
street: counter + ' Cedar Point St.'
});
});
http://plnkr.co/edit/lGmGiPIqEm2AA8cngkHz?p =预览
相关文章:
- mouseover和mouseleave文本颜色更改在指令链接中不起作用
- 指令$watch不会在更改时触发
- 显示/隐藏有关模型更改的指令内容
- 如何根据服务更改更新指令
- 我未保存的更改指令需要适用于具有不同名称的所有表单
- Angularjs指令如何检测属性中的更改
- 更改角度指令中属性的值
- AngularJS指令监视父级大小的更改
- 指令中的循环和ng更改Angular JS
- 角度指令:当选择更改时,ng 模型未正确更新
- 基于范围数据更改指令模板中的元素
- 角度 2 使用指令防止输入和模型更改
- AngularJS nvd3折线图指令未在数据更改时重新绘制(非实时)
- 监视自定义指令属性在父作用域更改时不发生更改
- Angular searchBar指令更改dom
- 角度指令 - 更改模板内的数据
- 使用controllerAs语法通过$watch指令更改父控制器模型
- ng显示指令更改相关作用域值后不更新
- angularjs使用指令更改css样式
- Angular:事件侦听器在指令更改之间递增增加