2016-10-18 3 views
0

ビューモデルからJsコントローラに関数を渡そうとしています。私のモデルビューをエクスポートしようとしました。ビューでは、ビューをキャプチャしようとしましたmodel.Nutこのエラーが表示されます:Brand.Catagory Is not a function。私のコードは次のようになります。Nativescript Module.export/Functionが機能しない

Brand_view_model:

function BrandViewModel(items) { 

     function Catagory (brand){ 

     var viewmodel = new Observable({ 

     brand: brand, 

    }); 

    return viewmodel 

    }; 
} 

module.exports = BrandViewModel; 

Jsのコントローラー:

var BrandViewModel = require("../../shared/brand_view_model"); 
var Brand = new BrandViewModel([]); 

exports.brand=function (args) { 
    var item = args.object; 
    var text = item.text; 

    Brand.Catagory(text); 

frameModule.topmost().navigate("view/brand/brand");   

    }  

ビュー:

 <Page loaded="loaded"> 
    <GridLayout> 
     <ListView items="{{ categoryList }}" > 
      <ListView.itemTemplate> 
       <Label text="{{ category }}" horizontalAlignment="left" verticalAlignment="center" tap="brand" /> 
      </ListView.itemTemplate> 
     </ListView> 

    </GridLayout> 
</Page> 

答えて

2

あなたのビューモデルを作成する方法は、この誤動作を引き起こしています。 ビューモデルを通じてアクセスできる関数を作成する適切な方法に従う最も簡単な方法は、基本のhello-worldアプリケーションを作成することです。ここ はメインビュー-model.jsで生成されたコード

var Observable = require("data/observable").Observable; 

function getMessage(counter) { 
    if (counter <= 0) { 
     return "Hoorraaay! You unlocked the NativeScript clicker achievement!"; 
    } else { 
     return counter + " taps left"; 
    } 
} 

function createViewModel() { 
    var viewModel = new Observable(); 
    viewModel.counter = 42; 
    viewModel.message = getMessage(viewModel.counter); 

    viewModel.onTap = function() { 
     this.counter--; 
     this.set("message", getMessage(this.counter)); 
    } 

    return viewModel; 
} 

exports.createViewModel = createViewModel; 

あなたは(ViewModelに呼ばれる)あなたの観測を作成しているし、その後、あなたが通過エクスポートする方法を「アタッチ」されているノートです我々はONTAP呼ばれるにアクセスする必要があります機能上記生成されたコードで

viewModel.myFuncName = func() {}; 

とビューモデル(のgetMessageが露出されていない - それが唯一のモデルファイル内に表示されている)

関連する問題