ng-init到我的控制器中的值

时间:2017-06-10 23:00:32

标签: javascript html angularjs angular-ngmodel ng-init

我正在编辑页面。我从服务器收到一个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或者角色的新手......帮忙?

3 个答案:

答案 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:""
}