2016-04-23 52 views
0

我有一个控制器,其获取数据来填充下拉大:观察Angular 1.5.3组件中的绑定变化?

MySrvc.getData() 
    .then(function (response) { 
     $scope.someData = response.data; 
    }); 

我也有被实例化并定义为这样的部件..

<my-component foo='someData'></my-component> 

angular.module('mod').component('myComponent', { 
    bindings: { 
     foo: '<' 
    }, 
    controller: function() { 

    } 
}); 

ngOptions决定了你必须有一个ngModel也是如此。我希望数组的第一个元素是选定的对象。 this.selectedElement = this.foo[0]。问题是,直到我知道绑定已更新,我实际上才写这行代码。

我不能在组件中使用scope.$watch,并且this.$onChanges似乎也没有工作。有任何想法吗?

+1

你必须至少使用angular 1.5.3来使用'$ onChanges'。但是它应该可以用'this。$ onChanges = function(){...}' –

+0

@SimonSchüpbach哦,嗯,我们的缩小版本与我们的非缩小版本不同。 去解决这个问题然后更新。 – sean

+0

@SimonSchüpbach就是这样。完美的作品。随意提交作为答案,我会提交。 – sean

回答

1

您必须至少有角1.5.3使用$onChanges。但是你可以像这样使用它

controller: function() { 
    this.$onChanges = function(){ 
     // your stuff 
    } 
} 
1

,你可以,如果你在你的元素添加ng-if如果你想使用一个观察者对this.foo可以使用$scope.$watch指令呈现数据已经

1

ng-if

<my-component ng-if="someData" foo='someData'></my-component> 

解决这个问题功能。它可以接受一个函数作为它的第一个参数,所以你可以看一个特定的变量。

尝试:

$scope.$watch(function() { 
    return this.foo; 
},true);