Angularjs -作用域的改变没有反映出来
Angularjs - change in scope not reflecting
我使用ddSlick插件在我的angularjs网站。插件工作得很好。但是在选择了该选项之后,作用域变量没有更新。这个链接也是同样的问题。但是这个答案不适合我。
$scope.ddData = []
for(var i in $scope.List){
var tempData = {}
tempData.text = $scope.List[i].name
tempData.value = $scope.List[i].slug
tempData.imageSrc = $scope.List[i].img + '.png'
if(i == 0)
tempData.selected = true
else
tempData.selected = false
$scope.ddData.push(tempData)
}
$('#Dropdown').ddslick({
data: $scope.ddData,
width: 350,
imagePosition: "left",
selectText: "Select a list",
onSelected: function (data) {
$scope.updateSelected(data);
$scope.$apply();
}
});
$scope.updateSelected = function(data){
$scope.Selected = data.selectedData.value
}
我必须循环通过一个变量来获取下拉列表的json数据。有人能帮忙吗?谢谢!
从控制器进行DOM操作被认为是坏主意。你需要使用指令将插件附加到特定的DOM。通过创建指令,您可以很好地控制该DOM从指令链接函数&您避免了selector
特定代码。
为了使它更紧凑和可重用的组件,你可以在你的指令中使用隔离的作用域,在你的指令中添加scope: {}
,并在里面传递data
和onUpdate
(在更改时更新)以在更新时调用。因此,这个组件将作为独立的,你可以很容易地为不同的数据提供不同的。
标记
<div dd-slick dd-data="ddData" update-selected="updateSelected(selected)"></div>
指令
app.directive('ddSlick', function(){
return {
scope: {
ddData: '=',
updateSelected: '&'
}
link: function(scope, element, attrs){
// Watch scope.ddData and attach ddSlick behavior only when it is populated
scope.$watch('ddData', function(newValue, oldValue) {
// return if newValue is undefined or same as oldValue
if (!newValue || newValue === oldValue) return;
element.ddslick({
data: scope.ddData,
width: 350,
imagePosition: "left",
selectText: "Select a list",
onSelected: function (data) {
scope.updateSelected({selected: data});
scope.$apply();
}
}
});
};
})
相关文章:
- 当根作用域属性改变时刷新指令
- AngularJS:如何在一个控制器中用触发器改变另一个控制器的作用域
- ES6的箭头函数在Meteor.publish中改变了它的作用域
- AngularJS指令——在作用域参数改变时重新运行link函数
- JavaScript作用域改变了吗?为什么会这样呢?
- 改变ng-repeat from指令内部的作用域
- 改变“this"主干集合的作用域
- 全局变量在按下按钮时没有改变(作用域问题)
- 改变一个作用域项
- Angularjs -作用域的改变没有反映出来
- Angular在作用域变量改变后更新指令
- AngularJS:不能通过指令改变父作用域
- 当值在AngularJS之外改变时,AngularJS指令的作用域不会更新
- 如何在作用域改变时重新绘制/重建指令中的模板
- 在ngDialog中提交表单后,Angular视图不会在作用域改变时更新
- Angular.js在变量改变后更新作用域
- 如何在作用域变量改变时继续调用函数
- Angular引导作用域改变屏幕大小
- AngularJS在作用域改变后如何运行javascript
- 在ui-select angularjs中,当作用域改变时,无法改变视图