角度指令中的ng-repeat

时间:2016-05-05 15:56:57

标签: javascript angularjs angularjs-directive angularjs-scope

我正在尝试创建一个带有一些额外功能的自定义选择指令。

.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,但它未在模板中更新。

2 个答案:

答案 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