2016-10-18 2 views
0

Я пытаюсь передать функцию из моей модели представления в мой контроллер Js. Я попытался экспортировать представление моей модели. В представлении я попытался захватить представление model.Nut Я получаю эту ошибку: Brand.Catagory - это не функция. Мой код выглядит следующим образом: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; 

Обратите внимание, что вы создаете свой Observable (называемый ViewModel), а затем вы «прикрепление» метод, который вы хотите экспортировать через вид модели с

viewModel.myFuncName = func() {}; 

в сгенерированном коде выше функции, мы будем иметь доступ к называется OnTap (GetMessage не подвергается - она ​​видна только в файле модели)

Смежные вопросы