Javascript 渲染AngularJS后执行Jquery插件

Javascript 渲染AngularJS后执行Jquery插件,javascript,jquery,ajax,angularjs,Javascript,Jquery,Ajax,Angularjs,我通过Ajax接收对象集合: // Var available in the template this.list = []; // This function refresh the list var self = this; this.refreshList = function () { ChannelService.get({}, function (result) { self.list = result.objects; }); }; // Initial ref

我通过Ajax接收对象集合:

// Var available in the template
this.list = [];

// This function refresh the list
var self = this;
this.refreshList = function () {
  ChannelService.get({}, function (result) {
    self.list = result.objects;
  });
};

// Initial refresh of the list
this.refreshList();
此集合用于填充选择项:

<option ng-repeat="channel in ChanListCtrl.list" value="channel.id">
    {{ channel.description }}
</option>
我尝试了这个解决方案:

此小部件显示正确,但AngularJS不会替换变量({channel.description}})

我尝试在Ajax完成时广播一个事件,但它不起作用。。。我还尝试在html标记上使用ng init调用更新函数,但没有成功


这里有一个例子来说明:

我个人会观察
列表
变量的任何更改,当检测到更改时,我会从multiselect插件调用
刷新
方法

在控制器中:

// Initialize the multiselect before anything else.
$('#channels').multiSelect();

// Add a watch on the list. Notice this uses the $timeout
// service, so you'll have to add that to your controller.
$scope.$watch('list', function(){
  $timeout(function(){
    $('#channels').multiSelect('refresh');
  });
});

Full Plunker:

就我个人而言,我会查看
列表
变量的任何更改,当检测到更改时,我会从multiselect插件调用
刷新
方法

在控制器中:

// Initialize the multiselect before anything else.
$('#channels').multiSelect();

// Add a watch on the list. Notice this uses the $timeout
// service, so you'll have to add that to your controller.
$scope.$watch('list', function(){
  $timeout(function(){
    $('#channels').multiSelect('refresh');
  });
});

Full Plunker:

就我个人而言,我会查看
列表
变量的任何更改,当检测到更改时,我会从multiselect插件调用
刷新
方法

在控制器中:

// Initialize the multiselect before anything else.
$('#channels').multiSelect();

// Add a watch on the list. Notice this uses the $timeout
// service, so you'll have to add that to your controller.
$scope.$watch('list', function(){
  $timeout(function(){
    $('#channels').multiSelect('refresh');
  });
});

Full Plunker:

就我个人而言,我会查看
列表
变量的任何更改,当检测到更改时,我会从multiselect插件调用
刷新
方法

在控制器中:

// Initialize the multiselect before anything else.
$('#channels').multiSelect();

// Add a watch on the list. Notice this uses the $timeout
// service, so you'll have to add that to your controller.
$scope.$watch('list', function(){
  $timeout(function(){
    $('#channels').multiSelect('refresh');
  });
});



Full Plunker:

我猜在调用jQuery插件后,您需要告诉angular重新执行它的工作。为此,您需要$compile service、$compile(element)($scope),有关更多信息,请参阅文档:另外,我建议您使用一个指令来改进选择框的外观。这将为您节省很多麻烦:@jValdron我已经看到了这个指令,但它没有使用ng模型,而且外观和感觉不是我想要的。拉萨洛姆:你能说得更清楚一点吗?我不知道如何使用$compile来解决我的问题。非常感谢您能在jsfiddle/plnkr/smth_else中创建一个示例,这样我就可以在那里编辑代码了。ThxMy猜测,在调用jQuery插件之后,您需要告诉angular重新执行它的工作。为此,您需要$compile service、$compile(element)($scope),有关更多信息,请参阅文档:另外,我建议您使用一个指令来改进选择框的外观。这将为您节省很多麻烦:@jValdron我已经看到了这个指令,但它没有使用ng模型,而且外观和感觉不是我想要的。拉萨洛姆:你能说得更清楚一点吗?我不知道如何使用$compile来解决我的问题。非常感谢您能在jsfiddle/plnkr/smth_else中创建一个示例,这样我就可以在那里编辑代码了。ThxMy猜测,在调用jQuery插件之后,您需要告诉angular重新执行它的工作。为此,您需要$compile service、$compile(element)($scope),有关更多信息,请参阅文档:另外,我建议您使用一个指令来改进选择框的外观。这将为您节省很多麻烦:@jValdron我已经看到了这个指令,但它没有使用ng模型,而且外观和感觉不是我想要的。拉萨洛姆:你能说得更清楚一点吗?我不知道如何使用$compile来解决我的问题。非常感谢您能在jsfiddle/plnkr/smth_else中创建一个示例,这样我就可以在那里编辑代码了。ThxMy猜测,在调用jQuery插件之后,您需要告诉angular重新执行它的工作。为此,您需要$compile service、$compile(element)($scope),有关更多信息,请参阅文档:另外,我建议您使用一个指令来改进选择框的外观。这将为您节省很多麻烦:@jValdron我已经看到了这个指令,但它没有使用ng模型,而且外观和感觉不是我想要的。拉萨洛姆:你能说得更清楚一点吗?我不知道如何使用$compile来解决我的问题。非常感谢您能在jsfiddle/plnkr/smth_else中创建一个示例,这样我就可以在那里编辑代码了。ThxThx,它甚至可以与真正的Ajax调用一起工作。但是我想把手表放在另一个控制器里。可能吗?示例:从您的Plunker中,可以按您正在做的事情来做,而且会起作用,但我不认为这是“有角度的方式”;)有什么改进建议吗?谢谢你的帮助,我不太确定你在找什么,这将属于另一个问题。Thx,它甚至适用于真正的Ajax调用。但是我想把手表放在另一个控制器里。可能吗?示例:从您的Plunker中,可以按您正在做的事情来做,而且会起作用,但我不认为这是“有角度的方式”;)有什么改进建议吗?谢谢你的帮助,我不太确定你在找什么,这将属于另一个问题。Thx,它甚至适用于真正的Ajax调用。但是我想把手表放在另一个控制器里。可能吗?示例:从您的Plunker中,可以按您正在做的事情来做,而且会起作用,但我不认为这是“有角度的方式”;)有什么改进建议吗?谢谢你的帮助,我不太确定你在找什么,这将属于另一个问题。Thx,它甚至适用于真正的Ajax调用。但是我想把手表放在另一个控制器里。可能吗?示例:从您的Plunker中,可以按您正在做的事情来做,而且会起作用,但我不认为这是“有角度的方式”;)有什么改进建议吗?谢谢你的帮助。我不太清楚你在找什么,这将属于另一个问题。