我制作的自定义指令效果很好。它的掠夺者是http://plnkr.co/edit/GxM78QRwSjTrsX1SCxF7?p=preview
在该指令中有ngModel调用 deptStation 我想在控制器中访问它,以便我可以将其用作其他函数中的参数来创建新数组。我也想看一下我可以称之为功能的每一个变化。
<plexus-select items="deptStations" header-text="Select station" text="Select departure..." text-icon="ion-chatbubble-working" text-field="City_Name_EN" text-field2="City_Code" value-field="City_Code" ng-model="deptStation">
</plexus-select>
我尝试编写下面的代码,但它没有显示控制台日志
$scope.$watch('deptStation', function(newValue, oldValue) {
if(oldValue != newValue) {
// perform something
console.log('New Value ' + newValue);
}
答案 0 :(得分:1)
我对离子指令并不完全确定,但您的问题可能是因为一个或多个离子指令创建了一个新范围,因此只需执行ng-model="deptStation"
就可以在该范围内创建新属性而不是你的控制器。
要避免这些问题,您应确保不要绑定到基元,而是绑定数组/对象。您应该像这样创建属性(为了清楚起见,重命名为selectedStation
):
$scope.selectedStation = {value: null};
然后你的手表会起作用:
$scope.$watch('selectedStation.value', function (station) {
console.log('watch', station);
});
http://plnkr.co/edit/96VgPzEXZuzxmHt32Afy?p=preview
正如@ m59所说,看起来你使用双向绑定比使用ng-model更好。