" Angular版本":" 1.3.8",
我有以下代码 控制器正在传递到页面
'use strict';
/**
* @ngdoc overview
* @name testApp
* @description
* # testApp
*
* Main module of the application.
*/
angular
.module('testApp', [
'ngAnimate',
'ngCookies',
'ngMessages',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.config(function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutCtrl'
})
.when('/test', {
templateUrl: 'views/test.html',
controller: 'MyCtrl'
})
.otherwise({
redirectTo: '/'
});
});
在test.html文件中
<div>
<input ng-model="expr" type="text" placeholder="Enter an expression" />
<h2>{{parsedValue}}</h2>
</div>
在controller.js文件中
'use strict';
angular.module('testApp').controller('MyCtrl', function($scope, $parse) {
$scope.$watch('expr', function(newVal, oldVal, scope) {
if (newVal !== oldVal) {
// Let's set up our parseFun with the expression
var parseFun = $parse(newVal);
// Get the value of the parsed expression
$scope.parsedValue = parseFun(scope);
}
});
});
{{parsedValue}}
未更新。$scope.parsedValue
未定义。parseFun
(我知道它可能是一个关闭以保留所有值)但它不起作用有人可以对发生的事情发出一些启示......这里还有另一个类似的问题,但我认为这个问题因为被问及的方式而存在一些问题。
答案 0 :(得分:0)
解析和引用范围的值有效:http://plnkr.co/edit/Ch2WFP3XGRvCySFh4UXz?p=preview
由于经常调用更改函数,因此代码会循环遍历几个变量名称,这些名称确实在$scope
上未定义。实际上,在给定的示例中,范围内的所有值都将为undefined
,因为没有定义任何变量,只有原始表达式(例如1 + 2
或"test"
)才有效。在链接示例中,变量x
可用于输入的表达式。
但是,这可能不是你想要的。
为了能够将用户的输入复制为string
,您不需要$parse
表达式。
相反,只需以下内容即可:
<input ng-model="expr" type="text" placeholder="Enter some text">
<h2>{{expr}}</h2>
无需控制器上的任何代码。