所以我有一個指令與隔離範圍和controllerAs模式。綁定有時
var directive = {
restrict: 'E',
scope: {
something: '='
},
templateUrl: './App/directiveTemplate.html',
controller: directiveController,
controllerAs: 'vm',
bindToController: true
}
,並在控制器我打電話初始化使用$ HTTP返回一個承諾REST服務。
function directiveController(someService) {
var vm = this;
// Here vm.something is defined and bound to the appropriate model set where the directive is used
init()
function init() {
return someService.getProducts()
.then(productsReady);
function productsReady(response) {
vm.products = response;
//find product using vm.something
// here vm.something is undefined
return vm.products;
}
}
的問題是,如果我的init()
方法vm.something
之前斷點是這樣定義應該是,但在productsReady
功能它是不確定的。
這是正常行爲嗎?承諾是否在不同的範圍內解析代碼?
的'productsReady()'函數在'的init()'方法中定義的。它在本地範圍內。你爲什麼期望它被定義在'init()'之外? –
您是否想了解JavaScript變量作用域?還是有什麼你想要做的,不工作? –
@JCFord我不是Javascript的專家。 init方法可以訪問範圍,所以我假定在init中定義的方法也可以以某種方式繼承。猜猜這不是真的? –