我正在编辑页面。我从服务器收到一个Json,其中包含:
{
"Q_id": 1,
"isMultipuleAns": 0,
"Q_mediaType": "page"
}
我正在尝试将信息放在输入div(type = text)或textarea div中。
<textarea type="text" name="question_title" ng-model="question.question_title" ng-init="question.question_title=index"`>
在我的控制器中我有类似的东西:
app.controller("someController",function($scope,$location,$http){
// some http requests that puts the mentioned jason in $scope.myJson
$scope.index= $scope.myJson.Q_id;
}
无论我尝试什么,ng-init只能使用静态字符串。我无法获得真实的ID出现在网站上。只获取一个空白输入字段。
我是html或者角色的新手......帮忙?
答案 0 :(得分:1)
我想这是因为你在异步方法中调用$scope.index= $scope.myJson.Q_id;
- 而且当ng-inits已经被触发时(由于没有提供足够的代码而无法确定)。
但总的来说,你可能会使用另一种方式而不是ng-init,因为将app逻辑放在视图中是相当不好的做法。为什么不:
$scope.index= $scope.myJson.Q_id;
$scope.question.question_title= $scope.myJson.Q_id;
或者,有时您可以使用ng-if推迟ng-init,例如:
<textarea type="text" name="question_title" ng-model="question.question_title" ng-if="index" ng-init="question.question_title=index">
答案 1 :(得分:1)
您不能像输入的那样在输入中使用ng-init
,因为它会在您的视图出现时在项目开始时起作用。
所以ng-init
为我做了什么!?
ng-init
用于调用controller
里面的函数view
或设置变量的默认值(不用作{{1}例如:
ng-model
在此示例中,我们可以直接在控制器中调用 var controller = function($scope){
$scope.makeNewId = function(){
return 15899933666;
}
}
,我们可以在$scope.makeNewId()
编译为view
时执行此操作,如果您注意它,则可以 每页重新加载
所以我的代码出了什么问题!
在您的代码中,您要将ng-init="makeNewId()"
值设为ng-model
,完全错误
如果您问为什么,那是因为您使用类似ng-init
的内容,这意味着您的question.question_title
名称为object
;所以我可以在我的控制器中轻松定义它:
question
答案 2 :(得分:1)
在div文件中使用ng-init封装文本区域。
<div ng-init="question.question_title=index">
<textarea type="text" name="question_title" ng-model="question.question_title">
</div>
这应该使用$ scope.question.question_title中的数据预填充文本区域,并确保在您的控制器中$ scope.question已经像这样定义。
$scope.question = {
question_title:""
}