Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Knockout.js文本将多个属性绑定到单个<;p>;节点_Javascript_Knockout.js_Data Binding - Fatal编程技术网

Javascript Knockout.js文本将多个属性绑定到单个<;p>;节点

Javascript Knockout.js文本将多个属性绑定到单个<;p>;节点,javascript,knockout.js,data-binding,Javascript,Knockout.js,Data Binding,我需要将标记绑定到视图模型中的值。 现在通常情况下,这不是问题所在,但在本例中,值在模型中被分成多个字段,因为它是一个地址 因此,我将“streetName”和“HouseNumber”作为单独的字段,但它们都需要在HTML中显示,作为这个标记的一部分 根据knockout.js的: 绑定值可以是单个值、变量或文本,也可以是几乎任何有效的JavaScript表达式 现在我注意到这里的“几乎”,所以我保留了,但是一个简单的字符串连接应该被认为是一个“足够简单的操作”是吗?我需要将我的标记的值绑定到

我需要将
标记绑定到视图模型中的值。 现在通常情况下,这不是问题所在,但在本例中,值在模型中被分成多个字段,因为它是一个地址

因此,我将“streetName”和“HouseNumber”作为单独的字段,但它们都需要在HTML中显示,作为这个标记的一部分

根据knockout.js的

绑定值可以是单个值、变量或文本,也可以是几乎任何有效的JavaScript表达式

现在我注意到这里的“几乎”,所以我保留了,但是一个简单的字符串连接应该被认为是一个“足够简单的操作”是吗?我需要将我的
标记的值绑定到模型中两个字符串字段的值,由于我正在尝试的语法不起作用,我将使用什么语法:

顺便说一句,dataBind1和dataBind2并不是那么简单,它是一个嵌套的函数调用,yadda,yadda,yadda,虽然它们在分离时工作得非常好,但我无法让它们在我希望它们在单个元素中“在一起”时工作。实际绑定值为:

编辑(稍微澄清一下viewModel的结构): 视图模型本身是一个JavaScript对象(
var viewModel
),它具有某些方法,例如getModelData(ID)、updateModelData(ID)等等。此处传递的ID是页面不同部分的控制器的“唯一控制器标识符”。这里有一些1:1对1:M的木乃伊,但这并不相关。
var viewModel
接收来自AJAX调用的信息,并使用附加属性动态更新其自身,根据这些属性,控制器被塞进页面中。因此,它将具有“uniqueID”属性,这实际上是淘汰的视图模型。
这样,所有视图模型都保存在单个对象的“接口”下。大概是这样的:

  var viewModel = {
        uniqueID: object, //knockout.js viewModel of Controller1
        uniqueID2: object, //knockout.js viewModel of Controller2
        getModelData(processID): function(){
           //does stuff
        }
    }
因此,在本例中,访问
getModelData(ID).Property()[0].Street
与访问常规非深嵌套模型中的
Property()[0].Street
几乎相同。敲除对象本身的结构类似于:

{
    Property: [
    {
        Street: "someStreet1"
        HouseNumber: "someNumber1"
    },
    {
        Street: "someStreet2"
        HouseNumber: "someNumber2"
    },
    {
        Street: "someStreet3"
        HouseNumber: "someNumber3"
    },
    ]

}

我不知道您是如何拥有视图模型的,但这里是您可以做的

 var MainViewModel = function (){
    var self = this;
    self.Street = ko.observable(getModelData(processID).Property()[0].Street);
    self.HouseNum = ko.observable(getModelData(processID).Property()[0].HouseNumber);

    self.FullAddress= ko.computed(function () {
        return self.Street() + ", " + self.HouseNum();
     });
 }
HTML



我不知道您是如何拥有视图模型的,但以下是您可以做的

 var MainViewModel = function (){
    var self = this;
    self.Street = ko.observable(getModelData(processID).Property()[0].Street);
    self.HouseNum = ko.observable(getModelData(processID).Property()[0].HouseNumber);

    self.FullAddress= ko.computed(function () {
        return self.Street() + ", " + self.HouseNum();
     });
 }
HTML



必须发送值、函数(返回值)或表达式

示例:

<p data-bind="text: (dataBind1() + dataBind2())"></p>

必须发送值、函数(返回值)或表达式

示例:

<p data-bind="text: (dataBind1() + dataBind2())"></p>

表达式中有一个语法错误。(尾随加号)。另外,为完全可复制的示例包含javascript视图模型也会很有帮助。javascript视图模型是动态生成的,本质上是私有的(闭包),因此我无法访问它,尾部+是我在这里输入的错误类型,页面上使用的代码中没有。我可以验证这两个binding在分离时是否工作,因为我添加了2个元素,并将其中1个绑定绑定到每个和那些工作的元素。我将提供更多的信息明天(也许甚至答案)在这3个小时,现在不能再看代码或我会挖我的眼睛。把你的实际问题一秒钟,我的第一个想法是,你的观点知道太多的基础模型-考虑抽象出一个子模型为您的观点,因此,视图不需要知道
getModelData(processID).Property()[0].Street
,而只是
Street
。嗯,@JamesThorpe这是一个有效点,它会仔细考虑。目前这个模型是动态更新的,而且非常混乱,所有的东西都是在服务器端动态创建的,所以它只是拖拽元数据链。实际上,在一个JS对象中嵌入了多个“视图模型”,我将与我的团队讨论,谢谢你的提示;你看到了什么错误?是否存在绑定,但不符合预期?您是否在applyBindings()处收到未处理的异常?您是否在呈现的HTML中看到类似于函数dependentObservable(){[native code]}的内容?如果表达式中有语法错误,则需要更多详细信息来进行测试。(尾随加号)。另外,为完全可复制的示例包含javascript视图模型也会很有帮助。javascript视图模型是动态生成的,本质上是私有的(闭包),因此我无法访问它,尾部+是我在这里输入的错误类型,页面上使用的代码中没有。我可以验证这两个binding在分离时是否工作,因为我添加了2个元素,并将其中1个绑定绑定到每个和那些工作的元素。我将提供更多的信息明天(也许甚至答案)在这3个小时,现在不能再看代码或我会挖我的眼睛。把你的实际问题一秒钟,我的第一个想法是,你的观点知道太多的基础模型-考虑抽象出一个子模型为您的观点,因此,视图不需要知道
getModelData(processID).Property()[0].Street
,而只是
Street
。嗯,@JamesThorpe这是一个有效点,它会仔细考虑。目前这个模型是动态更新的,而且非常混乱,所有的东西都是在服务器端动态创建的,所以它只是拖拽元数据链。那里