我正在尝试创建一个带有一些额外功能的自定义选择指令。
.directive('singleSelect',function(){
restrict:'A'
scope:{
model:'='
}
link:function(elem,scope,attrs){
elem.bind('click',function(){
scope.vModel=model.slice(0,20);
});
controller:function($scope)
{
//some more manipulation with model and assign to vModel
}
template:'<ul><li ng-repeat="item in vModel"></li><ul>'
});
问题在于我将值分配给vModel,但它未在模板中更新。
答案 0 :(得分:1)
这种情况正在发生,因为您正在更新jQuery选择器内的范围变量。您需要使用$ scope。$ apply来启动摘要周期,这将更新您的模型。
试试这个:
.directive('singleSelect',function(){
restrict:'A'
scope:{
model:'='
}
link:function(scope, elem, attrs){
elem.bind('click',function(){
scope.$apply(function(){
scope.vModel=model.slice(0,20);
})
});
controller:function($scope)
{
//some more manipulation with model and assign to vModel
}
template:'<ul><li ng-repeat="item in vModel"></li><ul>'
});
答案 1 :(得分:1)
注意,链接函数中的参数按顺序排列如下: link:function(scope,elem,attrs)
尝试使用$ apply方法:
elem.bind('click',function(){
scope.$apply(function(){
scope.vModel=model.slice(0,20);
});
});
捕获点击事件的最佳方法是使用angular ng-click指令: https://docs.angularjs.org/api/ng/directive/ngClick