小编Jar*_*ves的帖子

从View Model绑定到ListView项目的tapped属性

我正在尝试使用itemtapped属性将事件绑定到菜单页面上的ListView.目前我在我的应用程序中使用MVVM(Xamarin表单实验室)框架.我想要完成的是当用户点击菜单项时,应用导航到正确的视图.

这是xaml代码:

<ListView x:Name="list"
        ItemsSource="{Binding MenuItems}" 
        SelectedItem="{Binding SelectedItem}" 
        ItemTapped= SET-BINDING-HERE >
  <ListView.ItemTemplate>
    <DataTemplate>
      <ViewCell>
        <ViewCell.View>
          //setup template here
        </ViewCell.View>
      </ViewCell>
    </DataTemplate>
  </ListView.ItemTemplate> 
</ListView>
Run Code Online (Sandbox Code Playgroud)

我想将itemtapped事件绑定到此函数:

public void NavigateTo(object sender, ItemTappedEventArgs args)
  {
      var test = args.Item as MenuModel;
      cPageTypes.GetByKey(test.CommandParameter)
                .SwitchRootPage(AIMCore.ViewModels.ElliottBaseViewModel.MasterPage);
      list.SelectedItem = null;
      AIMCore.ViewModels.BaseViewModel.MasterPage.IsPresented = false;
  }
Run Code Online (Sandbox Code Playgroud)

如果我将函数添加到视图后面的代码然后设置ItemTapped ='NavigatTo ',我现在可以使用它,但这似乎是错误的,因为它击败了MVVM概念.我真正想做的是将事件绑定到我的ViewModel中的相同功能,如下所示:

<ListView x:Name="list"
        ItemsSource="{Binding MenuItems}" 
        SelectedItem="{Binding SelectedItem}" 
        ItemTapped= "{Binding NavigateTo}" > // this binding is to the ViewModel
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用或我没有正确地做到这一点.当我尝试以这种方式实现它时代码生成和错误.

错误: Xamarin.Forms.Xaml.XamlParseException:在Xamarin.Forms.Xaml.BaseValueNode.SetPropertyValue中找不到名称ItemTapped的属性

c# xaml mvvm xamarin xamarin.forms

15
推荐指数
2
解决办法
2万
查看次数

在AngularJS +页面刷新中传递页面之间的数据

我试图在应用程序的结帐过程中在页面之间传递数据,但它没有按照应有的方式工作.我做了一些阅读,大多数人建议使用服务,但唯一的问题是当页面刷新(用户点击刷新或稍后返回)时,服务中的所有数据都会消失.这是有道理的,因为服务中的数据并不是持久的,而是导致问题.

所以问题是:如何在angularJS中的页面之间传递数据,并保持页面刷新后传递的数据?

这是我的代码到目前为止(我尝试使用查询字符串):

.service('checkoutService', 
          function checkoutService($location, Address, $routeParams, TicketGroup) {
    var ticket_quantity = 0;
    var ticket_group = {};
    var selected_address = {};

    this.loadInformation = function() {
        if(!ticket_quantity && $routeParams.ticket_quantity)
            ticket_quantity = $routeParams.ticket_quantity;
        if(!ticket_group && $routeParams.ticket_group_id)
            ticket_group = TicketGroup.get({id: $routeParams.ticket_group_id});
        if(!selected_address && $routeParams.address_id)
            selected_address = Address.get({id: $routeParams.address_id});
    }

    this.setTicketQuantity = function(quantity) {
        ticket_quantity = quantity;
        $location.path().search({ticket_quantity: quantity});
    }
    this.getTicketQuantity = function() {
        return ticket_quantity;
    }

    this.setTicketGroup = function(object) {
        ticket_group = object;
        $routeParams.ticket_group = object.id;
    }
    this.getTicketGroup  = function() {
        return …
Run Code Online (Sandbox Code Playgroud)

angularjs

9
推荐指数
1
解决办法
1万
查看次数

扩展Angular服务中的基类

我有一个基类,我想在服务中扩展,以帮助将数据输入到角度范围.我在网上寻找解决方案,但没有找到我喜欢的解决方案.我有一个基类,用于访问设备的文件系统

班级结构:

var cOfflineStorageBase = Class.extend({
   init: function(){
   },
   CreateFolderDir: function(){
   },
   DeleteAll: function(){
   },
   DeleteDirectories: function(){
   },
   DeleteItem: function(){
   },
   GetFiles: function(){
   },
   FileExists: function(){
   }, 
   GetPath: function(){
   },
   GetObject: function(){
   },
   SaveObject: function(){
   },   
});
Run Code Online (Sandbox Code Playgroud)

我希望能够在几个不同的角度服务(即offlineCart,offlineCustomLists等)中扩展此类,其中每个服务都能够使用存储库来存储各种不同的数据类型.我正在寻找最好,最合适的方式来做角度.在vanilla JavaScript中,你可以这样做:

var newClass = cOfflineStorageBase.extend({
   //add new stuff here
});
Run Code Online (Sandbox Code Playgroud)

但我想以棱角分明的方式做同样的事情.

我一直在考虑的方法是使用angular.extend功能,但我不确定这是否合适,或者这样的事情是更合适的方法:

app.factory('someChild', ['$http' , 'cOfflineStorageBase', 
            function($http, cOfflineStorageBase){
  var SomeClass = cOfflineStorageBase.extend({
     init: function(){
        this._super.init()
     },
     //Add more stuff here
  });
  return SomeClass;
}]);
Run Code Online (Sandbox Code Playgroud)

如果这些方法是正确的,或者如果可能有另一个对我想要完成的事情更好,我想要一些建议.我还想或者更愿意在大部分代码中使用promises,因为它会是异步的.

javascript oop inheritance angularjs angular-services

6
推荐指数
1
解决办法
6054
查看次数

无法使用document.getElementById获取元素,返回null

我试图从一个文件中获取一个html节点,该文件稍后将用于计算其所有后代.我在从DOM中检索元素时遇到问题.这是我到目前为止所采取的步骤.

首先是我的HTML代码:

<html>
<head>
    <title></title>
</head>
<body>
<div id="container">
    <a></a>
    <div id="header">
        <div id="firstchild">
            <div>
                <img></img>
            </div>
            <a></a>
            <ul>
                <li>
                    <a>Inbox</a>
                </li>
                <li>
                    <a>Logout</a>
                </li>
            </ul>
            <form></form>
        </div>
        <div id="nextsibling"></div>
    </div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

其次,我构建了这个函数,它将文件返回并解析为文档.

public static Document buildDocument(String file){
    try {
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document document = docBuilder.parse(file);
        return document;
    } catch (ParserConfigurationException | SAXException | IOException ex) {
        System.out.println("the exception is: " + ex.toString());
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

接下来在我的main方法中,我尝试通过getElementById将Node对象设置为文档elemet,如:

public Document doc = …
Run Code Online (Sandbox Code Playgroud)

html javascript java parsing dom

4
推荐指数
1
解决办法
8971
查看次数