使用AngularJS指令、工厂和ng-repeat动态修改内容
Dynamically changing content with AngularJS directive, factory, and ng-repeat
我正在制作一个小部件,每当我单击相应的按钮时,它都会动态更改其内容。我已经花了很多时间想弄明白这个问题,但是我还是不明白。
我已经存储了angular factory提供的所有数据。我想要实现的是,每当我单击一个按钮时,它将触发一个事件来获取工厂数据中的另一个属性,这也是另一个数据集。这些将显示在ng-repeat的内容框中。
我将附上我的代码示例如下供您参考。请留下任何建议或任何概念,这将有助于我理解和进一步弄清楚这一点。感谢您的宝贵时间!
//index.html
<div directive>
<div class='buttons'>
<p>Button A</p>
<p>Button B</p>
<p>Button C</p>
</div>
<div>
<a ng-repeat='a in data'>{{a.title}} {{a.author}}</a>
</div>
</div>
//app.js
app.directive('directive', ['factoryData', function(factoryData) {
return {
restrict: 'A',
link: function ($scope, ele, attrs) {
$scope.data = factoryData.firstProp;
var btns = $(ele).find('p');
p.on('click', function () {
$scope.data = factoryData.secondProp;
...
...
});
},
};
}]);
你需要在指令中使用$apply
,因为你试图将新数据绑定到angular上下文之外的作用域。
app.directive('directive', ['factoryData', function(factoryData) {
return {
restrict: 'A',
link: function ($scope, ele, attrs) {
$scope.data = factoryData.firstProp;
var btns = $(ele).find('p');
p.on('click', function () {
$scope.$apply(function() { // use $apply to set the data..in scope
$scope.data = factoryData.secondProp;
});
...
...
});
},
};
}]);
相关文章:
- 动态修改一个元素,使其与给定的选择器匹配
- 如何使用带包装器的Javascript/jQuery动态修改CSS类
- 如何动态修改<选择>在实体化css框架中
- 在javascript中动态修改掩码高度
- 动态修改CSS-适用于IE9,但不适用于Chrome和Firefox
- 如何使用jQuery.ajax动态修改添加的html
- 动态修改系列的标题
- 使用 Javascript 对 SVG 进行动态修改不起作用
- 当表单被 js 动态修改时,如何更新 yiiactiveform 设置
- 使用 javascript 动态修改 SVG 过滤器
- 动态修改DOM并添加到文档中
- 如何动态修改jQuery多选下拉菜单的背景颜色
- 使用SVG文件动态修改谷歌地图图标
- 从javascript动态修改单个css属性的最有效方法
- 动态修改现有事件处理程序的值
- Ckeditor内联动态修改工具栏,使其内容可编辑
- knp-snappy捆绑包,从动态修改的树枝生成pdf
- 标记簇传单:动态修改图标
- 动态修改JavaScript中的构造函数
- 使用jQuery通过ID动态修改元素属性