は、だから私は、分離株の範囲とcontrollerAsパターンとディレクティブを持っています。バインディングない時々
var directive = {
restrict: 'E',
scope: {
something: '='
},
templateUrl: './App/directiveTemplate.html',
controller: directiveController,
controllerAs: 'vm',
bindToController: true
}
と私は約束を返し$ HTTPを使用してRESTサービスへの呼び出しでのinitコントローラインチ
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内で定義されたメソッドは継承の方法でアクセスすることも想定していました。本当ではないと思いますか? –