使用 ng-init 将变量绑定到我的控制器中的值

Using ng-init to bind a variable to a value in my controller

我正在编辑页面。我从我的服务器收到一个 Json,其中包含:

{
    "Q_id": 1,
    "isMultipuleAns": 0,
    "Q_mediaType": "page"
}

我正在尝试将信息放入输入 div(类型=文本)或文本区域 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 的新手,或者 angular...求助?

我猜这是因为你在异步方法中调用 $scope.index= $scope.myJson.Q_id; - 那是 ng-inits 已经被触发的时候(不能确定,因为没有提供足够的代码)。

但总的来说,您可能可以使用除 ng-init 以外的其他方法,因为将应用程序逻辑放在视图中是一种相当糟糕的做法。为什么不呢:

$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">

您不能像以前那样在输入中使用 ng-init,因为当您的视图出现时它会在项目开始时起作用。

所以 ng-init 为我做了什么!?

ng-init used for calling functions from controller inside the view or set default values for variables (which didn't use as ng-model) for example:

 var controller = function($scope){
   $scope.makeNewId = function(){
      return 15899933666;
   }
 }

在此示例中,我们可以直接在控制器中调用 $scope.makeNewId(),我们也可以在 view 编译为 ng-init="makeNewId()" 时调用 $scope.makeNewId(),如果您注意它可以工作 [=41] =]每页重新加载

所以我的代码有什么问题!

在你的代码中你想用 ng-init 设置 ng-model 值,完全错误

如果你问为什么,那是因为你使用了类似这样的东西 question.question_title 这意味着你有一个 object,它的名字是 question ;所以我可以很容易地在我的控制器中定义它:

 var controller = function($scope){
    $scope.question = {
      question_title: $scope.myJson.Q_id
    };
 }

在 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:""
}