如何正確使用隔離範圍屬性?如何正確使用隔離範圍屬性?
我有一個指令,它是從一個頁面控制器調用的,其屬性item
傳遞給它,例如, <my-directive item="myItem"></my-directive>
,包含id
。
下面的代碼將不起作用,因爲它似乎$scope.item
未被定義在控制器中..就像我太快使用它。我如何確定在我想要使用它時實際設置了它?
app.directive('myDirective', [function() {
return {
restrict: 'E',
templateUrl: 'template.html',
scope: {
item: "="
},
controller: ['$scope', 'ExtendedItemFactory', function($scope, ExtendedItemFactory) {
this.extendedInfo = ExtendedItemFactory.get({ id: $scope.item.id });
}],
controllerAs: 'MyDirectiveCtrl'
};
}]);
使用'$ watch'確實工作! – Andreas
我不得不說,角度不提供更簡單的本地解決方案是很奇怪的。 – Andreas
@Andreas是的,它會在沒有'.bind(this)'的情況下工作,因爲我們正在直接訪問isolatated scope變量..如果我們想使用鏈接的範圍變量到指令控制器,那麼只有我們會使用'.bind(this) '..如果它確實幫助了你,那就投票贊成..那麼.. –