textarea上的ng-model不起作用

时间:2016-05-06 06:35:50

标签: javascript angularjs

我在使用ng-model时遇到了问题。当我查看对象时,所有属性都为空:

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle(); //*

        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));

        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#473641"))); // change the color of header

        mDrawerList = (ListView)findViewById(R.id.listView);

        mTitle = mDrawerTitle = getTitle();

        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        // enabling action bar app icon and behaving it as toggle button
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_menu);

        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_menu, R.string.app_name,R.string.app_name)
        {
            public void onDrawerClosed(View view) {
                getSupportActionBar().setTitle(mTitle);
                // calling onPrepareOptionsMenu() to show action bar icons
                invalidateOptionsMenu();
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
            }
            public void onDrawerOpened(View drawerView) {
                getSupportActionBar().setTitle(mDrawerTitle);
                mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
                // calling onPrepareOptionsMenu() to hide action bar icons
                //invalidateOptionsMenu();
            }
        };

        mDrawerLayout.setDrawerListener(mDrawerToggle);

        getSupportActionBar().setIcon(R.drawable.ic_deals);
    }

但是当我点击提交按钮时,它返回的是

enter image description here 在html页面

代码:https://plnkr.co/edit/HJlfFVjq0cZWJDCDXSXw?p=preview

1 个答案:

答案 0 :(得分:2)

从plunker(虽然我无法运行你的代码),很明显你在表单中的两个不同场合使用相同的控制器PlayerController

  

这里发生的是updateUser()属性的方法ng-click绑定到控制器{{1}的 新实例 }。因此,创建一个新的PlayerController,并完全不知道对其邻近的同名控制器的范围属性(在这种情况下为scope)进行了哪些更改。

edit

解决方案

将整个表单包装在一个<div ng-controller="PlayerController"> <!-- ISOLATE region --> <textarea ng-model="edit.someproperty"></textarea> </div> <div ng-controller="PlayerController"> <!-- Another isolate region unaware of the above --> <button ng-click="updateUser(edit)">Update</button> </div> 指令中,以便该范围内的所有内容(ngController指令和方法ngModel)使用相同的范围属性。

Simple Demo

注意: 我还注意到您已将updateUser包裹在ngController内且不正确。 AngularJS中的form强加了一个form控制器对象,该控制器成为控制器的直接父控制器。实际上,使用FormController创建的控制器旨在处理表单的逻辑而不是其他方式。

相关问题