2
在我使用ngRoute的Angular v1.4.8應用程序中,我有一個想要在自定義指令的鏈接函數中訪問的解決方案。
根據文檔:
對於從模板解析的依賴更容易獲得,在 決心地圖將可在路由的
scope
,下$resolve
(默認)或自定義名稱由resolveAs
屬性指定。
...但$resolve
未定義在我的自定義指令的鏈接功能的scope
財產 - 甚至當我看着它更改。
爲什麼$resolve
不適用於scope
?
代碼:(JSFiddle)
angular.module('myApp', ['ngRoute'])
.config(routeConfig)
.directive('myDirective', myDirective)
;
function routeConfig($routeProvider) {
$routeProvider
.when('/', {
resolve: {
data: function($q) {
var deferred = $q.defer();
deferred.resolve('foo');
return deferred.promise;
}
},
template: '<my-directive></my-directive>'
})
.otherwise('/')
;
}
function myDirective($route) {
return {
link: function(scope, iElement, iAttrs) {
console.log($route.current.locals); // contains data
console.log(scope.$resolve); // undefined
scope.$watch(function() {
return scope.$resolve;
}, function(newValue) {
console.log(newValue); // undefined, never changes
});
}
};
}
相關的拉取請求(標記爲1.5.0-rc.0):https://github.com/angular/angular.js/pull/13400 –
我猜這有助於閱讀手冊的正確版本。謝謝! –