标签: 2-way-object-databinding

Android Spinner设置选择与双向绑定

当配置了双向数据绑定时,我很难获得一些与Android微调器一起使用的功能.我想通过双向数据绑定设置微调器的初始值android:selectedItemPosition.微调器条目由ViewModel初始化并正确填充,因此数据绑定似乎正常工作.

问题在于双向绑定selectedItemPosition.ViewModel将变量初始化为5,但微调器的选定项保持为0(第一项).调试时,ObservableInt的值最初为5(如设置),但在executeBindings的第二阶段重置为零.

任何帮助,将不胜感激.

test_spinner_activity.xml

<layout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable name="viewModel"
                  type="com.aapp.viewmodel.TestSpinnerViewModel"/>
    </data>
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="wrap_content">
       <android.support.v7.widget.AppCompatSpinner
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/sTimeHourSpinner"
            android:selectedItemPosition="@={viewModel.startHourIdx}"
            android:entries="@{viewModel.startTimeHourSelections}"/>
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

TestSpinnerViewModel.java

public class TestSpinnerViewModel {
    public final ObservableArrayList<String> startTimeHourSelections = new ObservableArrayList<>();
    public final ObservableInt startHourIdx = new ObservableInt();

    public TestSpinnerViewModel(Context context) {
        this.mContext = context;

        for (int i=0; i < 24; i++) {
            int hour = i;
            startTimeHourSelections.add(df.format(hour));
        }
        startHourIdx.set(5);
    }
}
Run Code Online (Sandbox Code Playgroud)

TestSpinnerActivity.java

public class TestSpinnerActivity extends AppCompatActivity {
    private TestSpinnerActivityBinding …
Run Code Online (Sandbox Code Playgroud)

android spinner 2-way-object-databinding

12
推荐指数
1
解决办法
7175
查看次数

AngularJS如何实现其双向数据绑定机制?

AngularJS允许您实现双向数据绑定.然而,有趣的部分是它如何检测模型变化?该模型通常是一个普通的对象,如下面的代码.我们可以更改名称属性,$scope.user但AngularJS如何检测模型已更改?AngularJS是否枚举了$scope对象的所有属性?

angular.module('myApp', [])
      .controller('BusinessCardController', function($scope){
        $scope.user = {
          name: 'Tanay Pant'
        }
      });

<input type="text" ng-model="user.name" placeholder="Full Name" />
Run Code Online (Sandbox Code Playgroud)

2-way-object-databinding angularjs

10
推荐指数
2
解决办法
9683
查看次数

c#绑定到嵌套对象上的字段

我似乎无法找到一个简单,具体的解释,说明如何使用数据绑定将WinForms应用程序中的控件绑定到嵌套对象.例如:

class MyObject : INotifyPropertyChanged
{
    private string _Name;
    public string Name 
    { 
        get { return _Name; } 
        set 
        { 
            _Name = value; 
            OnPropertyChanged("Name"); 
        }    
    }

    private MyInner _Inner;
    public MyInner Inner 
    { 
       get { return _Inner; } 
       set 
       { 
           _Inner = value; 
           OnPropertyChanged("Inner"); 
       } 
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

class MyInner : INotifyPropertyChanged
{
    private string _SomeValue;
    public string SomeValue 
    {
        get { …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding .net-4.0 2-way-object-databinding

8
推荐指数
1
解决办法
3160
查看次数

Android Bindings停止工作

突然间我对android stoped工作的绑定,我现在建立的任何东西,我只是得到这个消息.

错误:任务':app:compileDevDebugJavaWithJavac'的执行失败.

java.lang.RuntimeException:发现数据绑定错误.****/数据绑定错误****消息:找不到android.widget.EditText上值类型为java.lang.String的属性'android:text'的getter.file:C:\ path\to\layout\layout.xml loc:85:12 - 96:54****\data binding error****

我试过了什么

首先,如果我的文件中存在错误,则建议绑定不会编译,因此删除了我使用绑定到一个文件的所有布局文件 layout.xml.我有

 <EditText
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:text="@{model.name}" />
Run Code Online (Sandbox Code Playgroud)

...并且它运行良好,但是如果我添加双向绑定android:text="@={model.name}"它会抛出上一个错误.

接下来,我补充说

@InverseBindingAdapter(attribute = "android:text")
public static String captureEditTextValue(EditText view) {
    return view.getText().toString();
}
Run Code Online (Sandbox Code Playgroud)

...然后它会引发新的错误.

错误:任务':app:compileDevDebugJavaWithJavac'的执行失败.

java.lang.RuntimeException:发现数据绑定错误.****/数据绑定错误****消息:无法在视图类型'android.widget.EditText'文件中找到事件'android:textAttrChanged':C:\ Users\EdgeTech\AndroidStudioProjects\purse\purse-customer\app\src\main\res\layout\get_phone_layout.xml loc:85:12 - 96:54****\data binding error****

进一步,重构这一点

 @InverseBindingAdapter(attribute = "android:text", event = "android:textAttrChanged")
 public static String captureEditTextValue(EditText view) {
        return view.getText().toString();
 }
Run Code Online (Sandbox Code Playgroud)

...仍然给出了以前的错误.

我的设置

  • Android Studio:2.3.3
  • Gradle构建工具:2.3.3

java android 2-way-object-databinding android-databinding

8
推荐指数
1
解决办法
1048
查看次数

将标记分配给包含属性数据绑定的innerHTML时,聚合物数据绑定不起作用

在使用innerHTML时,在Polymer中创建数据绑定到属性的最简单方法是什么?

这是我的意思的一个例子 - http://jsfiddle.net/ry6og1q9/2/

<paper-input inputValue="{{foo}}" label="static foo"></paper-input>
Run Code Online (Sandbox Code Playgroud)

"staticFoo"paper-input是与{{foo}}绑定的数据 - 双向数据绑定.

var c = this.$.dynamicFooPlaceHolder;
c.innerHTML = '';
var e = document.createElement('div');
e.innerHTML = '<paper-input id="dynamicFoo" inputValue="{{foo}}" label="dynamic foo"></paper-input>';
c.appendChild(e);
Run Code Online (Sandbox Code Playgroud)

但是,使用innerHTML创建的"dynamicFoo"并没有以任何方式绑定到foo属性,尽管它的标记存在.

我试图用Node.bind() - http://www.polymer-project.org/docs/polymer/node_bind.html完成这个, 但它只绑定一种方式.

必须有一个平台实用程序来进行解析/绑定,但我无法在任何地方找到它.

data-binding 2-way-object-databinding polymer

7
推荐指数
1
解决办法
1382
查看次数

双向绑定不与ng-repeat一起使用

我有一个简单的ng-repeat列表,其中我将当前列表项值分配给控制器上的另一个属性,如下所示:

  <li ng-repeat="num in list">
    <input type="text" ng-init="value = num" ng-model="value" />
    <button type="button" class="btn btn-primary" ng-click="save()">Save</button>
  </li>
Run Code Online (Sandbox Code Playgroud)

但是当我单击"保存"按钮时,我会获得为$ scope.value设置的默认值.我希望显示特定输入文本的值.

这是控制器:

 angular.module('myApp', [])
    .controller('MyController', function($scope){
      $scope.value = false;
      $scope.list = [0, 1, 2, 3, 4];

      $scope.save = function() {
         alert($scope.value);
      }
    });
Run Code Online (Sandbox Code Playgroud)

如何在保存函数调用中访问控制器中输入项的更新值.

这是相同的plunker:plnkr

更新:我希望将值提取到控制器而不将其作为参数传递.

javascript 2-way-object-databinding angularjs ng-repeat angular-ngmodel

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

带有数据绑定的房间注释处理器

我在现有代码中使用了数据绑定,现在我正在迁移到Room以进行持久化.我已经按照Florina博客中提到的步骤进行了访问

当我删除房间依赖时,我的代码构建正常,没有java代码错误或BR相关错误

 annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
Run Code Online (Sandbox Code Playgroud)

和它的运行,但给出运行时异常,说database_Impl不存在.因为它无法生成该文件.

但是在我把Annotation处理器放回去后,它给了我

 Error:(29, 37) error: cannot find symbol class BR
Run Code Online (Sandbox Code Playgroud)

我使用的gradle插件是 com.android.tools.build:gradle:3.0.1

他们似乎都没有合作

迄今采取的步骤:

  1. 将BaseObservable更改为Observable如此处所示
  2. 将Android Studio更新为3.0.1
  3. 尝试使用gradle最新插件金丝雀6
  4. 清除,清除缓存也完成了

有没有人使用Room和Data绑定在一起?

android 2-way-object-databinding android-databinding annotation-processor android-room

7
推荐指数
1
解决办法
3878
查看次数

ASP.NET中的双向数据绑定

假设我们有一个对象

class Entity
{
    public string ID {get; set;}
    public string Name {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我想将属性绑定到页面上的两个文本框,如下所示:

<asp:FormView ID="FormView" runat="server">
  <ItemTemplate>
    <asp:textbox ID="TextId" Text='<%# Bind("ID") %>'/>
    <asp:textbox ID="TextId" Text='<%# Bind("Name") %>'/>
  </ItemTemplate>
</asp:FormView>
Run Code Online (Sandbox Code Playgroud)

然后在代码后面写这个

public EntityObject
{
    get { return ViewState["Entity"] as Entity; }
    set { ViewState["Entity"] = value; }
}

protected override void OnInit(EventArgs e)
{
    if (EntityObject== null)
        EntityObject= new EntityObject();

    FormView.DataSource = new[] { EntityObject };
    FormView.DataBind();
    base.OnInit(e);
}
Run Code Online (Sandbox Code Playgroud)

当我在文本框中输入值时,我希望EntityObject在PostBack之后重新加载页面时在属性中包含这些值,但属性始终为null.

.net c# asp.net data-binding 2-way-object-databinding

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

Firebase倒数计时器在多个客户端同步

我将采用角度JS来为一个特定的利基建立一个便士拍卖网站.我正在尝试计划倒数计时器,我一直在寻找试用firebase的理由.

我昨天想到让每次拍卖都以某种方式在实际数据库中进行倒计时,因为通过双向数据绑定,人们将始终保持更新.

当firebase更改时,所有连接的客户端立即更改.所以我的问题是......我怎样才能在特定记录中进行服务器端倒计时.

所以说我有一个项目x的记录,它有所有项目信息,其中一个数组键是"倒计时:59:01:00".什么是在SERVER端从59:01:00到00:00:00倒计时的现实和可扩展的方式.

我想也许是每1秒运行一次的cronjob?但随后数百个数据库条目每秒运行数百个倒计时,服务器可能会崩溃.

有什么好主意吗?

javascript node.js 2-way-object-databinding angularjs firebase

6
推荐指数
2
解决办法
4836
查看次数

uploadcare.com的angularjs数据绑定不起作用

我正在尝试将上传脚本集成到我的页面中.我正在使用uploadcare.com.他们提供了一个简单的指令,但我无法让它工作:

https://github.com/uploadcare/angular-uploadcare/blob/master/angular-uploadcare.js
Run Code Online (Sandbox Code Playgroud)

我正在设置ng-model ="test",在我的控制器中我有以下内容:

angular.module('testApp')
  .controller('MyCtrl', function ($scope) {
    $scope.test = "test";
  });
Run Code Online (Sandbox Code Playgroud)

HTML代码看起来像这样:

<uploadcare-widget ng-model="test" data-public-key="xyz" />
Run Code Online (Sandbox Code Playgroud)

当我检查Firebug时,我可以看到该小部件有效:

<input type="hidden" role="uploadcare-uploader" ng-model="test" data-public-key="6e0958899488d61fd5d0" data-crop="1200:630" value="http://www.ucarecdn.com/ca5513da-90f1-40d1-89e7-648237xxxxxx/-/crop/2560x1344/0,128/-/preview/" class="ng-isolate-scope ng-valid">
Run Code Online (Sandbox Code Playgroud)

但是这个输入值永远不会填充回我的"$ scope.test".这是为什么?当我输出$ scope.test时,它仍然显示"test"而不是我的图像路径值.

data-binding 2-way-object-databinding angularjs

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