Angularjs 双向数据绑定不起作用;$watch也不起作用
Angularjs two-way data binding not working; $watch doesn't work either
作为一名新的角度开发人员,我浏览了一些教程并构建了一些独立或基于火力的角度练习应用程序,并认为我正在掌握框架。我想启动一个与服务器和数据库配对的真实应用程序,所以我在 github 上找到了一个 laravel 驱动的 angular 堆栈:
https://github.com/jadjoubran/laravel5-angular-material-starter
长话短说,这个堆栈为角度控制器生成的代码看起来与我见过的任何角度控制器都完全陌生:
class CreateStringFormController{
constructor(){
'ngInject';
//
}
}
我添加了
class CreateStringFormController{
constructor($scope){
'ngInject';
$scope.string = 'test';
$scope.stringed = $scope.string+'ed';
//
}
}
和我的模板:
<textarea rows="4" columns="50" class="form-control">{{string}}</textarea>
<h3>Parsed string: <span>{{stringed}}</span></h3>
这里的想法是,当您在文本区域中键入时,它下面的 h3 输出 textarea+'ed' 的值,但数据绑定不起作用。在页面加载时,变量按原样设置为"test"和"tested",但键入不会更新 {{stringed}} 的值。即使我放弃了控制器中的所有内容,只是将文本区域和 h3 都设置为相同的 {{string}},它也不起作用。
如果我将内容包装在 $scope.$watch 中,则会出现"$digest已在运行"错误。如果有人能指出我正确的方向,那会很震撼。此外,如果有人可以解释为什么这个堆栈像所有 angularjs 教程那样使用构造函数而不仅仅是 app.controller(),并且使用数十个导出/导入,那将是锦上添花!
PS文件是.js的,而不是.ts,不是我知道打字稿是什么,但这在我的谷歌搜索中出现了很多。
希望我的问题不要太复杂!谢谢!
好的,在你的模板中试试这个:
<textarea rows="4" columns="50" class="form-control" ng-model="string"></textarea>
您的<span>
也一样
<h3>Parsed string: <span ng-bind="stringed"></span></h3>
使用 {{string}}
& {{stringed}}
将其显示为值,它实际上并不绑定它。
将string
连接到stringed
变量仅在第一次时才有效。更新变量后string
不会更新stringed
变量的值。因为它们是基元类型变量。您尝试做的事情只有在引用类型变量此类对象的情况下才有可能。
如果您担心在 UI 上显示 anl 值。你不需要为它有单独的变量(尽管它不会像你想要的那样工作,因为它是基元类型)
请直接将其绑定到视图中。
<h3>Parsed string: <span ng-bind="string+ 'ed'"></span></h3>
以下是我如何让它工作:
$scope.string = 'whit';
$scope.stringed = function(input){
return input+'ed';
}
然后在模板中:
<textarea rows="4" columns="50" class="form-control" ng-model="string"></textarea>
<h3>Parsed string: <span ng-bind="stringed(string)"></span></h3>
所以我在一个返回我的值的函数中做了所需的逻辑,把它放在$scope上(有人知道正确的词汇表吗?),然后,正如 Pankaj Parkar 所说,使用 ng-bind 将新函数绑定到 span 元素,并传入 $scope.string,它起作用了!
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- Dojotoolkit watch() 在 switch 上不起作用
- Angularjs 双向数据绑定不起作用;$watch也不起作用
- 角度$watch不起作用
- 角度范围.$watch在指令中不起作用
- $watch不起作用
- 在 $scope.$watch 中更新时,独立作用域绑定不起作用
- $watch在更改字符串时第二次不起作用
- Angularjs $watch在我的项目中不起作用
- Gulp.watch-dosen;当我使用intellij思想进行开发时,它不起作用
- $watch对angularjs中的工厂变量不起作用
- Angular指令实例$watch不起作用
- angularjs的Ngdialog watch功能不起作用