我一直在尝试将一个函数从我的视图模型传递给我的Js控制器。我试图导出我的模型视图。在View中,我试图捕获视图模型。但是我收到此错误: Brand.Catagory不是函数。我的代码如下所示:
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>
答案 0 :(得分:3)
您创建视图模型的方式导致了这种不当行为。 按照正确方法创建可通过视图模型访问的函数的最简单方法是创建基本的hello-world应用程序。 以下是 main-view-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),然后您将&#34;附加&#34;要使用
通过视图模型导出的方法viewModel.myFuncName = func() {};
在上面生成的代码中,我们可以访问的函数名为 onTap (getMessage未公开 - 它只在模型文件中可见)