Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS可以';设置值文本区域_Javascript_Html_Angularjs_Textarea - Fatal编程技术网

Javascript AngularJS可以';设置值文本区域

Javascript AngularJS可以';设置值文本区域,javascript,html,angularjs,textarea,Javascript,Html,Angularjs,Textarea,我试图为表单中的某些元素设置默认值,虽然它适用于所有输入字段,但它似乎不适用于textarea,而代码几乎相同 表格的HTML格式: <form class="form-horizontal" id="infoForm" name="form" ng-submit="ctrl.submitInfoForm(form)" novalidate> <div class="form-group"> <label for="inputEditName

我试图为表单中的某些元素设置默认值,虽然它适用于所有输入字段,但它似乎不适用于textarea,而代码几乎相同

表格的HTML格式:

<form class="form-horizontal" id="infoForm" name="form" ng-submit="ctrl.submitInfoForm(form)" novalidate>
    <div class="form-group">
        <label for="inputEditName">Name</label>
        <input type="text" class="form-control" value="{{ctrl.viewedName}}" id="inputEditName" ng-model="viewUser.name">
    </div>
    <div class="form-group">
        <label for="inputEditLocation">Location</label>
        <input type="text" class="form-control" value="{{ctrl.viewedLocation}}" id="inputEditLocation" ng-model="viewUser.location">
    </div>
    <div class="form-group">
        <label for="inputEditWebsite">Website</label>
        <input type="text" class="form-control" value="{{ctrl.viewedWebsite}}" id="inputEditWebsite" ng-model="viewUser.website">
    </div>
    <div class="form-group">
        <label for="inputEditBio">Bio</label>
        <textarea rows="3" class="form-control" id="inputEditBio" ng-model="viewUser.bio" >{{ctrl.viewedBio}}</textarea>
    </div>
    <button type="submit" class="btn btn-default">Save Changes</button>
</form>
默认情况下,仅设置名称,因此此时看起来如下所示:

姓名:我的名字 地点:- 网站:- Bio:

来自:

ngModel将尝试绑定到通过在当前作用域上计算表达式而给出的属性。如果该属性在此范围中不存在,则将隐式创建该属性并将其添加到范围中

因此,在您的例子中,angular试图将Textarea绑定到
viewUser.bio
属性。由于它不存在,它将使用空值创建它,然后“覆盖”您在html中给出的
ctrl.viewedBio

解决问题的简单方法:

在控制器中(在Init函数或类似的东西中)


我发现我做错了什么

首先,我有一个ngModel和一个控制器的字段连接到textarea(以及其他输入),所以我删除了这个字段,现在我只使用ngModel

其次,我忘了按ctrl键。在我的模型属性中。我通过简单地添加ctrl键来改变这一点。到我的模型属性

所以我改变了这一切,它现在起作用了,它看起来是这样的:

HTML:


虽然的回答和评论有所帮助,我觉得这些并没有完全回答我的问题,这就是我添加这个答案的原因。

为什么要使用value和ng model两个ng model都会自动绑定value remove value属性,从所有元素中删除value属性,对于text area,只需在controller中保持它与text area的ng model不匹配,并且没有
ctrl
前缀任何一个创建一个显示问题的演示
var vm = this;
vm.getViewedName = getViewedName;
vm.getViewedLocation = getViewedLocation;
vm.getViewedWebsite = getViewedWebsite;
vm.getViewedBio = getViewedBio;
vm.viewedName = getViewedName();
vm.viewedLocation = getViewedLocation();
vm.viewedWebsite = getViewedWebsite();
vm.viewedBio = getViewedBio();

function getViewedName() {
    if (vm.viewedName === undefined) {
        var viewedName;
        var viewedUser = UserService2.getViewedUser();
        viewedName = viewedUser.name;
        if (viewedName === "") {
            viewedName = "-";
        }
        return viewedName;
    } else {
        return vm.viewedName;
    }
}

function getViewedLocation() {
    if (vm.viewedLocation === undefined) {
        var viewedLocation;
        var viewedUser = UserService2.getViewedUser();
        viewedLocation = viewedUser.location;
        if (viewedLocation === "") {
            viewedLocation = "-";
        }
        return viewedLocation;
    } else {
        return vm.viewedLocation;
    }
}

function getViewedWebsite() {
    if (vm.viewedWebsite === undefined) {
        var viewedWebsite;
        var viewedUser = UserService2.getViewedUser();
        viewedWebsite = viewedUser.website;
        if (viewedWebsite === "") {
            viewedWebsite = "-";
        }
        return viewedWebsite;
    } else {
        return vm.viewedWebsite;
    }
}

function getViewedBio() {
    if (vm.viewedBio === undefined) {
        var viewedBio;
        var viewedUser = UserService2.getViewedUser();
        viewedBio = viewedUser.bio;
        if (viewedBio === "") {
            viewedBio = "-";
        }
        return viewedBio;
    } else {
        return vm.viewedBio;
    }
}
vm.viewUser.bio = vm.viewedBio
<form class="form-horizontal" id="infoForm" name="form" ng-submit="ctrl.submitInfoForm(form)" novalidate>
    <div class="form-group">
        <label for="inputEditName">Name</label>
        <input type="text" class="form-control" id="inputEditName" ng-model="ctrl.viewUser.name">
    </div>
    <div class="form-group">
        <label for="inputEditLocation">Location</label>
        <input type="text" class="form-control" id="inputEditLocation" ng-model="ctrl.viewUser.location">
    </div>
    <div class="form-group">
        <label for="inputEditWebsite">Website</label>
        <input type="text" class="form-control" id="inputEditWebsite" ng-model="ctrl.viewUser.website">
    </div>
    <div class="form-group">
        <label for="inputEditBio">Bio</label>
        <textarea rows="3" class="form-control" id="inputEditBio" ng-model="ctrl.viewUser.bio" ></textarea>
    </div>
    <button type="submit" class="btn btn-default">Save Changes</button>
</form>
var vm = this;
vm.getViewedUser = getViewedUser;
vm.viewUser = getViewedUser();


function getViewedUser() {
    if (vm.viewUser === undefined) {
        vm.viewUser = UserService2.getViewedUser();
        if (vm.viewUser.name === "") {
            vm.viewUser.name = "-";
        }
        if (vm.viewUser.location === "") {
            vm.viewUser.location = "-";
        }
        if (vm.viewUser.website === "") {
            vm.viewUser.website = "-";
        }
        if (vm.viewUser.bio === "") {
            vm.viewUser.bio = "-";
        }
        return vm.viewUser;
    } else {
        return vm.viewUser;
    }
}